JLabel在你最大化我的框架

时间:2018-01-28 21:59:28

标签: java swing jlabel maximize

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

我制作了一个学校项目,要求我制作一个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);

1 个答案:

答案 0 :(得分:2)

不要使用setBounds()。 Swing旨在与布局管理器一起使用,因此让布局管理器确定组件的大小/位置。阅读Layout Managers上的Swing教程,了解工作示例,以帮助您入门。

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

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

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