2017-04-24 8 views
0

スライダから半径を取り、円周と直径をラベルに出力する簡単なプログラムを作成するために、いくつかのJLabelでスライダを使用しようとしています。私の問題は、私は境界線レイアウトでラベルをレイアウトする方法を理解できないようです。スライダーはうまく表示されますが、私はラベルの行の左側の行にラベルをレイアウトできるようにしたいと思います。JFrameを使用した枠線のレイアウト

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.FlowLayout; 
import java.awt.GridBagLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JSlider; 
import javax.swing.SwingConstants; 
import javax.swing.event.ChangeListener; 
import javax.swing.event.ChangeEvent; 

public class Slider extends JFrame { 

private final JSlider radiusJSlider; 
private final JLabel radius; 
private final JLabel diameter; 


public Slider() { 
    super("Slider Demo"); 
    BorderLayout layout = new BorderLayout(); 
    radius = new JLabel("radius"); 
    diameter = new JLabel("diameter"); 

    radiusJSlider 
      = new JSlider(SwingConstants.HORIZONTAL, 0, 200, 10); 
    radiusJSlider.setMajorTickSpacing(10); // create tick every 10 
    radiusJSlider.setPaintTicks(true); 
    radiusJSlider.setPaintLabels(true);// paint ticks on slider 

radiusJSlider.setLabelTable(radiusJSlider.createStandardLabels(10)); 
    //JPanel panel = new JPanel(new BorderLayout()); 

    //panel.add(diameter, BorderLayout.CENTER); 
    JPanel labels = new JPanel(new FlowLayout(FlowLayout.LEFT)); 

    labels.add(radius); 
    labels.add(diameter); 

    add(radiusJSlider, BorderLayout.SOUTH); 
    //add(radius, BorderLayout.CENTER); 
    //add(diameter, BorderLayout.CENTER); 
    layout.addLayoutComponent(labels, BorderLayout.CENTER); 
    radiusJSlider.addChangeListener(
      new ChangeListener() // anonymous inner class 
    { 
     // handle change in slider value 
     @Override 
     public void stateChanged(ChangeEvent e) { 
      int results; 
      int diameterResults; 

      results = radiusJSlider.getValue(); 
      diameterResults = results * 2; 

      radius.setText(String.format("radius: %2d", radiusJSlider.getValue())); 
      diameter.setText(String.format("diameter: %2d", diameterResults)); 
     } 
    } 
    ); 

} 

} 
+0

をパネルを追加するにBorderLayoutが作成されますが、私は並んで行くだろうか何 –

答えて

1

私はあなたがこのlayout.addLayoutComponent(labels, BorderLayout.CENTER);をやっている理由は、これはあなたがJFrameので、レイアウトマネージャ

と対話する方法ではありませんわからないが、デフォルトでBorderLayoutを使用して、作成する必要はありません新しいものは、代わりに、ちょうど、あなたはスライダーで行った同じことをした容器に

add(labels); // BorderLayout.CENTER is the default position 
+0

に追加されていないようですのラベル垂直行対水平? –

+0

[レイアウトマネージャのビジュアルガイド](http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)および[コンテナ内のコンポーネントのレイアウト](http:// docs.oracle.com/javase/tutorial/uiswing/layout/index.html) – MadProgrammer

関連する問題