我无法看到按钮 - (按照教程)

时间:2015-08-04 06:38:14

标签: 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!");

        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);
}
}

这是我遵循的教程 https://www.youtube.com/watch?v=svM0SBFqp4s

5 个答案:

答案 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.//'