基本上我想要做的就是画两排按钮用于熄灯游戏(家庭作业),但我不知道如何让两个面板都显示出来。我以前几乎没有任何图形,我也不会理解我正在做的任何事情。 他们自己的面板工作,但它只显示我添加的第二个(我假设它覆盖了前一个面板)
public static void main(String[] args) {
String nButtonsString = JOptionPane.showInputDialog("How many buttons would you like?");
int nButtons = Integer.parseInt(nButtonsString);
JFrame myFrame = new JFrame();
myFrame.setTitle("Linear Lights Out Game.");
myFrame.setSize(FRAME_SIZE);
JPanel control_buttons = new Linear_Controls();
myFrame.add(control_buttons);
JPanel lights = new LinearLightsPanel(nButtons);
myFrame.add(lights);
myFrame.pack();
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
答案 0 :(得分:2)
myFrame.add(control_buttons);
myFrame.add(lights);
默认情况下,JFrame使用BorderLayout。此外,默认情况下,组件会添加到BorderLayout的CENTER
。但是,CENTER只能包含单个组件,因此仅显示添加的最后一个组件。尝试:
myFrame.add(control_buttons, BorderLayout.NORTH);
现在应该显示两个组件。
阅读Using Layout Managers上Swing教程中的部分,了解更多信息和示例。另请查看Trail/Table of Contents
链接,了解基本Swing用法的其他有用主题。
答案 1 :(得分:0)
您必须创建2个面板A和B并将它们添加到另一个面板C.然后将C添加到您的框架中。
更好一点解释:这就是你现在所拥有的:
JPanel lights = new LinearLightsPanel(nButtons);
myFrame.add(lights);
但你想要像:
JPanel lightsA = new LinearLightsPanel(nButtonsA);
JPanel lightsB = new LinearLightsPanel(nButtonsB);
JPanel lightsC = new JPanel();
lightsC.add(lightsA);
lightsC.add(lightsB);
myFrame.add(lightsC);