【发布时间】:2012-04-09 20:31:29
【问题描述】:
我正在使用 swing 使用 BorderLayout 管理器在一个 JPanel 内构建一个带有 4 个 JPanel 的 GUI:
- 一行标签
- 一列 JButtons
- 显示区域(它是一个扩展JPanel的类,没有添加任何内容,用作绘图区域)
- 另一列按钮
我的代码如下所示:
JPanel middle = new JPanel();
middle.setLayout(new BorderLayout());
middle.add(midLabels,BorderLayout.NORTH);
middle.add(pickupButtons,BorderLayout.WEST);
middle.add(simulation,BorderLayout.CENTER);
middle.add(dropButtons,BorderLayout.EAST);
模拟面板只是一个扩展的 JPanel,它覆盖了paintComponent 以绘制图像。问题是,模拟区域在左边而不是在中间:
我真正想要的是:
编辑,这里是一个例子,我需要使用不同的布局管理器来正确定位空的 JPanel 吗?:
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
final static int MAXFLOORS = 8;
public Test() {
setLayout(new BorderLayout());
setTitle("Simulator");
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 500);
JPanel simulation = new JPanel();
JPanel dropButtons = new JPanel();
JPanel pickupButtons = new JPanel();
pickupButtons.setLayout(new GridLayout(MAXFLOORS, 1));
dropButtons.setLayout(new GridLayout(MAXFLOORS, 1));
setLayout(new BorderLayout());
add(simulation,BorderLayout.CENTER);
add(dropButtons,BorderLayout.EAST);
add(pickupButtons,BorderLayout.WEST);
for (int i = MAXFLOORS; i != 0; i--) {
JButton pb = new JButton("F" + i);
dropButtons.add(pb);
JButton db = new JButton("F" + i);
dropButtons.add(db);
}
repaint();
}
public static void main(String[] args) {
new Test();
}
}
【问题讨论】:
-
如需尽快获得更好的帮助,请发布SSCCE。顺便说一句 - 你有问题吗?
-
随机问题,您是否尝试过更改添加组件的顺序?
-
您可能(无意中)将
pickupButtons添加到dropButtons。 -
这让我想起了“Tappet”兄弟的 Click and Clack 广播节目的俄罗斯司机,Pikop Andropov 先生。
-
出于我的好奇心,有两种方法可以使用或不使用 GlassPane / JLayer