我觉得这很奇怪,因为我只是按照教程学习,而他的效果很好。我们有完全相同的代码..
我在另一台计算机上尝试了此源代码,但仍然无法工作。
主类:
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class swingJava {
public static void main(String[] args){
JFrame frame = new JFrame("Hello World!");
SwingUtilities.invokeLater(new Runnable() {
public void run(){
frame.setSize(500, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
这是大型机类。
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JFrame;
public class MainFrame extends JFrame{
public MainFrame(String title){
super(title);
// Set layout manager
setLayout(new BorderLayout());
// Create Swing Component
JTextArea textArea = new JTextArea("test");
JButton button = new JButton("Click me");
// Add Swing Componenents to content pane
Container c = getContentPane();
c.add(textArea, BorderLayout.CENTER);
c.add(button, BorderLayout.SOUTH);
}
}
最佳答案
您永远不会创建 MainFrame
的实例,相反,您只需创建 JFrame
的实例,这不是同一回事。
相反,请考虑尝试诸如...
SwingUtilities.invokeLater(new Runnable() {
public void run(){
MainFrame frame = new MainFrame("Hello World!");
frame.setSize(500, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
作为一般经验法则,不鼓励直接从 JFrame 这样的顶级容器进行扩展,您不会向类添加任何新功能,而只是将自己限制为单次使用案例。
通常,最好从 JPanel
之类的东西进行扩展,这样您就可以将其添加到您喜欢的任何容器中
关于java - 我看不到按钮 - (遵循教程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31802322/