java - 我看不到按钮 - (遵循教程)

标签 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

最佳答案

您永远不会创建 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/

相关文章:

java - JFrame 在线程内无法正常运行

java - -> <- 运算符是做什么的?

java - 在Java中读取.tsv文件

java - 在非常耦合的业务逻辑中解耦 Java 中的类

Css3,当鼠标悬停在父div上时显示或隐藏子div

cocoa - 最小绘画程序的示例代码(MS Paint 风格)

ios - Apple Watch 滚动代码标签

java - 如何实例化游戏

java - 将 JButton 图标左对齐并保持文本居中

java - AWT 与 Swing 的对比……为什么要使用 Swing?