Java 我能';t查看按钮-(遵循教程)
我觉得这很奇怪,因为我只是在学习一个教程,他的工作很好。我们有相同的密码 我在另一台计算机上尝试了此源代码,但仍然不起作用 主要类别:Java 我能';t查看按钮-(遵循教程),java,swing,user-interface,Java,Swing,User Interface,我觉得这很奇怪,因为我只是在学习一个教程,他的工作很好。我们有相同的密码 我在另一台计算机上尝试了此源代码,但仍然不起作用 主要类别: import javax.swing.JFrame; import javax.swing.SwingUtilities; public class swingJava { public static void main(String[] args){ JFrame frame = new JFrame("Hello World!");
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);
}
}
这是我遵循的教程
您从不创建大型机的实例,而是简单地创建一个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
扩展,这样您就可以将它添加到您喜欢的容器中,而不是使用JFrame=newjframe(“Hello World!”)
您应该使用MainFrame frame=new MainFrame(“Hello World!”)
,因为您要在MainFrame中添加所有组件,如textare和按钮。而不是这个
JFrame frame = new JFrame("Hello World!");
这样做:
MainFrame frame = new MainFrame("Hello World!");
您永远不会创建大型机实例,因此不会有任何组件
您使用了simple JFrame,默认情况下它不包含任何组件您需要创建大型机的实例。更改您的声明,如:
JFrame frame = new MainFrame("Hello World!");
您需要创建类的实例,还必须通过set-Bounds方法设置类的大小和位置
public class Main Frame extends J Frame {
private static final long serialVersionUID = 1L;
public MainFrame(String title) {
super(title);
setLayout(new BorderLayout());
JTextArea textArea = new JTextArea("test");
textArea.setBounds(10, 10, 50, 20);
JButton button = new JButton("Click me");
button.setBounds(10, 20, 50, 20);
Container c = getContentPane();
c.add(textArea, BorderLayout.CENTER);
c.add(button, BorderLayout.SOUTH);
}
public static void main(String args[]) {
MainFrame frame = new MainFrame("Title");
frame.setSize(500, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
您从未创建或使用大型机的实例:
JFrame=newjframe(“helloworld!”)代码>应该是这样的:MainFrameframe=newmainframe(“helloworld!”)代码>嗨,欢迎来到SO。请提供问题的简短描述:“它不起作用”不描述什么不起作用,实际行为是什么,以及您预期会发生什么“…并且您必须通过设置边界方法设置大小和位置。”不!Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。