2016-04-13 11 views
0

アニメーションが付いたjpanelがあります。例えば、start \ pause、ffwなど複数のボタンを追加します。 JButton.setBorders()を使用しようとしましたが、レイアウトを変更することもできます。しかし、ボタンは、setLayout()を使用しているときに画面の一番上に表示されるか、または重なり合って表示されます。どのようにしてこれら2つのボタンを画面の下部(左右)に置くことができますか。ここ は私のコードです:ここではJPanel上の特定の位置にJButtonを設定する

public class Animation extends JPanel implements ActionListener { 
private static final long serialVersionUID = 1L; 

private Cell[][] cellMatrix; 
private Options op; 
private Dimension expectedDimension; 

private JPanel startButtonPanel; 
private JPanel pauseButtonPanel; 

private JButton startButton; 
private JButton pauseButton; 

Animation(Options received) { 

    this.setLayout(new BorderLayout()); 

    startButton = new JButton("Start"); 
    startButtonPanel = new JPanel(); 
    startButtonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
    startButtonPanel.add(startButton); 
    this.add(startButtonPanel,BorderLayout.SOUTH); 

    pauseButton = new JButton("Pause"); 
    pauseButtonPanel = new JPanel(); 
    pauseButtonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 
    pauseButtonPanel.add(pauseButton); 
    this.add(pauseButtonPanel,BorderLayout.SOUTH); 


    this.op = received; 

    expectedDimension = new Dimension((op.getNumberOfCells()*10) , (op.getNumberOfCells()*10)); 
    setPreferredSize(expectedDimension); 
    setMaximumSize(expectedDimension); 
    setMinimumSize(expectedDimension); 


    this.cellMatrix = new Cell[op.getNumberOfCells()][op.getNumberOfCells()]; 
} 

あなたは南パネルは、X軸上BoxLayoutを使用することもできますスクリーンショット As you can see the pause button has a huge size and also overlaps the start button

+0

'SOUTH'位置に配置された空間にボタンを' GridBagLayout'を用い 'JPanel'、 'BorderLayout'を使用して親コンテナの名前を変更する – MadProgrammer

答えて

0

です。

ボタン間の水平方向の接着剤は、各パネルのその側に留まることを保証する。

JPanel buttonsPanel = new JPanel(); 
buttonsPanel.setLayout(new BoxLayout(buttonsPanel,BoxLayout.X_AXIS)); 

JButton pauseButton = new JButton("Pause"); 
buttonsPanel.add(pauseButton); 

// create a glue between buttons 
buttonsPanel.add(Box.createHorizontalGlue()); 


JButton startButton = new JButton("Start"); 
buttonsPanel.add(startButton); 

this.add(buttonsPanel,BorderLayout.SOUTH); 
+0

ありがとう!それらの間に別のボタンを追加する方法はありますか? – Keselme

+0

@Keselme:もちろん、comp-glue-comp-glue -...のように、必要に応じて他のコンポーネントや他のグルーを追加することができます。 – Berger

関連する問題