我觉得这很奇怪,因为我只是按照教程,他的工作正常。我们有完全相同的代码..
我在另一台计算机上尝试过这个源代码,但仍然无法正常工作。
主要课程:
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);
}
}
答案 0 :(得分:3)
您永远不会创建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
扩展,这样就可以将它添加到您喜欢的容器中
答案 1 :(得分:2)
而不是使用JFrame frame = new JFrame("Hello World!");
您应该使用MainFrame frame = new MainFrame("Hello World!")
,因为您要在MainFrame中添加textarea和按钮等所有组件。
答案 2 :(得分:2)
而不是
JFrame frame = new JFrame("Hello World!");
这样做:
MainFrame frame = new MainFrame("Hello World!");
您永远不会创建MainFrame实例,因此不会有任何组件。
您使用的是简单的JFrame,默认情况下不包含任何组件
答案 3 :(得分:2)
您需要创建MainFrame
的实例。更改您的声明,如:
JFrame frame = new MainFrame("Hello World!");
答案 4 :(得分:0)
您需要创建Class的实例,并且还必须通过set Bounds方法设置size和location的大小。
git show-ref | grep $(git rev-parse HEAD) | grep remotes | grep -v HEAD | sed -e 's/.*remotes.origin.//'