-1

所以我的按钮相互覆盖,而不是像工具栏一样向北移动。如果有意义的话,我试图让按钮向北移动。我知道我的 GUI 很糟糕,一旦我完成了这个原型,我会重新连接它。

    // panels
    mainPuzzlerPanel = new Panel();
    mainPuzzlerPanel.setLayout(new BorderLayout());
    puzzlePanel = new Panel();

    //mainPuzzlerPanel.setLayout(null);
    puzzlePanel.setLocation(100, 120);

    // text fields
    debugTxt = new TextArea(null,6,40,1);
    debugTxt.setEditable(false);
    mainPuzzlerPanel.add(debugTxt,BorderLayout.NORTH);

    // buttons
    Button newPuzzle = new Button("New Puzzle");
    Button loadImage = new Button("Load Image");
    Button assignLocation = new Button("Assign Location");
    Button assignTimestamp = new Button("Assign Timestamp");
    Button savePuzzle = new Button("Save Puzzle");
    Button clearPuzzleCreator = new Button("Clear");

    newPuzzle.addActionListener(this);
    loadImage.addActionListener(this);
    assignLocation.addActionListener(this);
    assignTimestamp.addActionListener(this);
    savePuzzle.addActionListener(this);
    clearPuzzleCreator.addActionListener(this);

    mainPuzzlerPanel.add(assignLocation,BorderLayout.NORTH);
    mainPuzzlerPanel.add(assignTimestamp,BorderLayout.NORTH);

    mainPuzzlerPanel.add(loadImage,BorderLayout.NORTH);
    mainPuzzlerPanel.add(savePuzzle,BorderLayout.NORTH);
    mainPuzzlerPanel.add(clearPuzzleCreator,BorderLayout.NORTH);
    mainPuzzlerPanel.add(newPuzzle,BorderLayout.NORTH);
    mainPuzzlerPanel.add(puzzlePanel,BorderLayout.CENTER);

    add(mainPuzzlerPanel, "Controls");

    setSize(1200, 700);
    setVisible(true);
4

1 回答 1

4

不能添加所有组件 BorderLayout.NORTH,没有意义。相反,将 JButton 添加到使用不同布局(例如 GridLayout)的 JPanel,然后添加该 JPanel BorderLayout.NORTH。但最重要的是——阅读有关如何使用布局管理器的教程。看起来您在猜测,这不是学习如何使用这些复杂工具的有效方法。

重新审视,

我知道我的 GUI 很糟糕,一旦我完成了这个原型,我会重新连接它。

也不是一个好的计划。第一次写好就容易多了。

例如,

// after creating all of your JButtons, put them in an array...
JButton[] btnArray = {newPuzzle, loadImage, assignLocation, assignTimestamp, 
        savePuzzle, clearPuzzleCreator};
JPanel buttonPanel = new JPanel(new GridLayout(1, 0, 5, 0));
for (JButton btn : btnArray) {
  buttonPanel.add(btn);
}
mainPuzzlerPanel.add(buttonPanel, BorderLayout.NORTH);

编辑:糟糕,我注意到您现在使用的是按钮和面板,而不是 JButton 和 JPanel。我敦促您将您的应用程序更改为 Swing 应用程序而不是 AWT 应用程序。


布局管理器教程:在容器中布局组件

于 2013-10-29T03:06:05.117 回答