按下按钮时,JComboBox 和 JTextField 消失



我在创建一个简单的应用程序来计算每秒点击次数时遇到了一些麻烦。代码如下:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.Border;
public class CPSFrame implements ActionListener {
    JFrame frame;
    JPanel borderPanel, settings;
    JButton click;
    String[] timesList = {"5","10","15","20","25","30"};
    JComboBox times;
    JTextField showCps;

    public CPSFrame() {
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                CPSFrame c = new CPSFrame();
                c.drawGui();
            }
        });
    }
    public void drawGui() {
        frame = new JFrame();
        borderPanel = new JPanel();
        settings = new JPanel();
        click = new JButton("Click me!");
        times = new JComboBox(timesList);
        showCps = new JTextField();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("CPS Calculator");
        {
            borderPanel.setLayout(new BorderLayout(0, 0));
            frame.add(borderPanel);
            {
                borderPanel.add(click);
                settings.setLayout(new GridLayout(1, 0, 0, 0));
                borderPanel.add(settings, BorderLayout.SOUTH);
                {
                    settings.add(times);
                    settings.add(showCps);
                }
            }
        }
        frame.pack();
        frame.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent evt) {
    }
}

出于某种原因,如果我调整 JFrame 的大小并按 clicktimesshowCPS都消失了。我有一种感觉,这与我设置BorderLayout的方式有关,但我不确定。

这是正在发生的事情的视频。

编辑:更新了代码并添加了正在发生的事情的视频。

对我来说

效果很好(Java 1.6,Win),调整大小和单击后没有任何内容消失。尝试显式指定c.click的位置 c.borderPanel.add(c.click,BorderLayout.CENTER);也许有些Java实现(平台,版本)中BorderLayout不喜欢未指定的位置。

最新更新