当前位置: 动力学知识库 > 问答 > 编程问答 >

java swing multiple jpanels

问题描述:

Basically all I want to do is draw two rows of buttons for a lights out game (homework), but I don't know how to make both panels show up. I've pretty much almost no graphics before, and I don't really understand anything I'm doing.

The panels them selves work, but it just shows whichever I add second (I assume it's overwriting the previous panel)

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);

网友答案:
myFrame.add(control_buttons);
myFrame.add(lights);

By default a JFrame uses a BorderLayout. Also, by default components get added to the CENTER of the BorderLayout. However the CENTER can only contain a single component so only the last component added is displayed. Try:

myFrame.add(control_buttons, BorderLayout.NORTH);

Now the two components should show up.

Read the section from the Swing tutorial on Using Layout Managers for more information and examples. Also take a look at the Trail/Table of Contents link to see other useful topics for basic Swing usage.

网友答案:

You have to create the 2 panels A and B and add them to another panel C. Then you add C to your frame.

A bit better explained: This is what you have now:

JPanel lights = new LinearLightsPanel(nButtons);
myFrame.add(lights);

But you would like something like:

JPanel lightsA = new LinearLightsPanel(nButtonsA);
JPanel lightsB = new LinearLightsPanel(nButtonsB);

JPanel lightsC = new JPanel();
lightsC.add(lightsA);
lightsC.add(lightsB);

myFrame.add(lightsC);
分享给朋友:
您可能感兴趣的文章:
随机阅读: