无法向框架GUI添加按钮

时间:2018-05-15 19:27:21

标签: java eclipse swing

我正在尝试在我的程序中向JPanel添加一个简单的JButton。问题是当我运行问题时,我根本看不到任何按钮。

这是我的代码:

import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class GuiStopwatch { 
    public GuiStopwatch() {
        JPanel panel = new JPanel();
        JButton Startbtn = new JButton("START");          
        panel.add(Startbtn);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Stopwatch");

        frame.setSize(600, 600);
        frame.setLayout(new FlowLayout());
        frame.setVisible(true);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    }
}

我可以知道我做错了什么以及如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您不会在任何时候将面板添加到框架中。

EDIT 如果您想在单独的方法中使用,则需要以下代码:

import javax.swing.*;
import java.awt.*;

public class GuiStopwatch {


private static void stopwatch(JFrame frame) {

    JPanel panel = new JPanel();
    JButton Startbtn = new JButton("START");
    panel.add(Startbtn);
    frame.add(panel);

}


public static void main(String[] args) {
    JFrame frame = new JFrame("Stopwatch");

    stopwatch(frame);

    frame.setSize(600, 600);
    frame.setLayout(new FlowLayout());
    frame.setVisible(true);
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

}

}

答案 1 :(得分:1)

您可以交换东西,在构造函数上创建框架所需的一切,使代码更有条理的原因以及您可以在其他类中使用它,使用main方法将限制您可以执行的操作并使代码不会

见这里的例子:

public GuiStopwatch() {

    setTitle("Stopwatch");
    setSize(600, 600);

    // Create JButton and JPanel
    JButton button = new JButton("START");
    JPanel panel = new JPanel();

    panel.add(button);
    this.getContentPane().add(panel);

    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public static void main(String[] args) {

    GuiStopwatch guistopwatch = new GuiStopwatch();
}