java - 如果不扩展 JFrame,将生成 Accomdations?

  显示原文与译文双语对照的内容

我从YouTube视频学习 Java Swing GUI,因为我在大学的下一学期才学到它,我觉得等等太有趣了。 但是,尽管视频制造商很容易跟踪,但我已经学习了很多,因为他的编码实践有点不同。 ( 例如,他不关心封装或者驼山的情况) 。

我不知道如何把这些视频连接在一起,所以我不知道如何把这些视频连接在一起。

我将给出项目的一般示例: ( 我只是添加了 private,因为这是我所习惯的)


public class Something extends JFrame {
 private JPanel topPanel;
 private JPanel bottomPanel;
 private JLabel label;
 private JButton button;

 public Something() {

 Container pane = this.getContentPane();//need help with this

 topPanel = new JPanel();
 topPanel.setLayout(new GridLayout(1,1));

 label = new JLabel("x");
 topPanel.add(label);
 pane.add(topPanel);

 bottomPanel = new JPanel();
 bottomPanel.setLayout(new GridLayout(1,1));

 button = new JButton("Button");
 bottomPanel.add(button);
 pane.add(bottomPanel);

 Event e = new Event();
 button.addActionListener(e);

 }

 public class Event implements ActionListener {

 }

另外,我阅读了另一个线程,为什么扩展JFrame是一个。 如果要适应,我可以创建一个JFrame框架,然后做 add(frame)? 然后确保我把下一层添加到相框里? 我需要做什么?

时间: 作者:

一般来说,你不应该扩展 JFrame 。 相反,扩展你的代码可能看起来像的JPanel:


public class Something extends JPanel {
//very similar code to yours goes here
//though I'd set a specific LayoutManager
}

现在你有了更多的灵活性: 你可以将出色的GUI添加到 JFrame 。JDialog或者其他更复杂的JPanel中。 e.g.


JDialog dialog = new JDialog();
JPanel reallyComplexPanel = new JPanel(new BorderLayout());
//add in stuff here, e.g buttons at the bottom
Something mySomething = new Something();
reallyComplexPanel. add(mySomething, BorderLayout.NORTH);//my stuff at the top
dialog.setContentPane(reallyComplexPanel);

作者:
...