我一直在从YouTube视频学习Java Swing GUI,因为直到大学下学期结束才学到它们,我觉得等待太有趣了。然而,尽管视频制作者已经很容易理解,而且我已经学到了很多东西,但我可以说他可能是自己学习的,因为他的一些编码实践与我们在学校学到的有点不同。 (例如,他不关心封装或骆驼案。)这让我担心我所学的一切都将毫无用处。
他在视频中所做的所有项目都在一个类中,使用实现ActionListener,MouseListener等的内部类。所以我不知道如何将我从这些视频中学到的内容与无GUI的多类项目联系起来我在学校期间工作。
我将举一个关于项目如何的一般例子:(我只是添加私有,因为这就是我习惯的)
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框架,然后添加(框架)?然后确保我将下一层添加到框架中?我需要做些什么?
答案 0 :(得分:1)
通常,您不应该扩展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);