我正在与Swing合作,试图学习如何使用它。我在书中做了一个练习,我应该制作像DVD播放器那样的按钮(JButtons)。此时我没有为按钮添加功能。当我第一次运行它时,程序运行得很好。然后我想我会通过使用相同的按钮制作第二个面板(JPanel)来扩展它。然而,当我运行我的代码时,我只得到一组按钮(不是两个区域有两组按钮)。 我是否误解了Panels的概念?我已经将Panel理解为我框架中的一个区域(一个容器),我可以在其中显示不同的输出,并且我可以在一帧中拥有多个面板。
这是我的代码:
import javax.swing.*;
public class Oppgave91 extends JFrame
{
public Oppgave91()
{
super ("We make buttons");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JButton play = new JButton("Play");
JButton stopeject = new JButton("Stop/Eject");
JButton rewind = new JButton("Rewind");
JButton fastforward = new JButton("FastForward");
JButton pause = new JButton("Pause");
JPanel panel = new JPanel();
panel.add(play);
panel.add(stopeject);
panel.add(rewind);
panel.add(fastforward);
panel.add(pause);
JPanel panel2 = new JPanel();
panel2.add(play);
panel2.add(stopeject);
panel2.add(rewind);
panel2.add(fastforward);
panel2.add(pause);
add(panel);
add(panel2);
setVisible(true);
}
public static void main(String[] args)
{
Oppgave91 showbuttons = new Oppgave91();
showbuttons.pack();
}
}
答案 0 :(得分:3)
组件只能有1个父组件。请参阅我的代码段的最后一行,了解它应该如何完成
JPanel panel = new JPanel();
panel.add(play);
panel.add(stopeject);
panel.add(rewind);
panel.add(fastforward);
panel.add(pause);
//right now panel is the parent component of play, stop, eject
JPanel panel2 = new JPanel();
panel2.add(play); //play is now owned by panel2, not panel
panel2.add(stopeject); //stopeject is now owned by panel2, not panel
panel2.add(new JButton("Rewind")); // this is how you should do this