繁体   English   中英

只有最大化我的框架,JLabel才会显示

[英]JLabel doesn't show up until you maximize my frame

我一直在寻找这种情况,但是显然没有其他问题了,所以,我继续。

我正在做一个学校项目,要求我制作一个JFrame,尽管我在ActionEvents上度过了很痛苦的时光,但我终于可以使它工作了,所以在我的JFrame中得到一些信息之后,我需要在JLabel中显示答案是这样,唯一的事情是单击按钮后什么也没有发生,但是当我最大化或调整窗口本身的大小时发生了。

    button1= new JButton("Add user");
    button1.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
           user= input1.getText();
        if(user.isEmpty()){
        JOptionPane.showMessageDialog(null, "you have an error there!");
        }
        else {
        output2 = new JLabel("thx for registering, "+user);
        output2.setBounds(10,40,150,20);
        panel.add(output2);
        }
    }
    });
    button1.setBounds(310,10,140,20);
    panel.add(button1);

不要使用setBounds()。 Swing被设计为与布局管理器一起使用,因此让布局管理器确定组件的大小/位置。 阅读有关布局管理器的Swing教程,以获取入门示例。

将组件添加到可见的GUI时,基本代码应为:

panel.add(...);
panel.revalidate();
panel.repaint();

revalidate()将调用布局管理器以为组件指定大小/位置。 repaint()确保所有组件都被绘制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM