按下按钮时JComboBox和JTextField消失

时间:2015-06-22 00:04:47

标签: java swing

我正在创建一个简单的应用程序,以便计算每秒的点击次数。代码如下:

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的大小并按click,则timesshowCPS都会消失。我觉得这与我设置BorderLayout的方式有关,但我不确定。

以下是video正在发生的事情。

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

1 个答案:

答案 0 :(得分:-1)

对我来说很好(Java 1.6,Win),调整大小和点击后没有任何消失。尝试明确指定c.click的位置c.borderPanel.add(c.click,BorderLayout.CENTER); 也许有一些Java实现(平台,版本),其中BorderLayout不喜欢未指定的位置。