在您最大化我的框架之前,JLabel 不会出现
JLabel doesn't show up until you maximize my frame
我一直在寻找这种情况,但显然没有其他问题,所以,我开始了。
我正在做一个学校项目,它需要我制作一个 JFrame,尽管我在 ActionEvents 上度过了一段糟糕的时光,但我终于可以让它工作了,所以在我的 JFrame 中获得一些我需要的信息之后在 JLabel 中显示一个答案,嗯,确实如此,唯一的事情是在我单击我的按钮后没有任何反应,但是当我最大化或调整 window 本身时它会发生。
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 旨在与布局管理器一起使用,因此让布局管理器确定组件的 size/location。阅读 Layout Managers 上的 Swing 教程以获取工作示例以帮助您入门。
将组件添加到可见 GUI 时,基本代码应为:
panel.add(...);
panel.revalidate();
panel.repaint();
revalidate() 将调用布局管理器为组件提供 size/location。 repaint() 确保所有组件都被绘制。
我一直在寻找这种情况,但显然没有其他问题,所以,我开始了。
我正在做一个学校项目,它需要我制作一个 JFrame,尽管我在 ActionEvents 上度过了一段糟糕的时光,但我终于可以让它工作了,所以在我的 JFrame 中获得一些我需要的信息之后在 JLabel 中显示一个答案,嗯,确实如此,唯一的事情是在我单击我的按钮后没有任何反应,但是当我最大化或调整 window 本身时它会发生。
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 旨在与布局管理器一起使用,因此让布局管理器确定组件的 size/location。阅读 Layout Managers 上的 Swing 教程以获取工作示例以帮助您入门。
将组件添加到可见 GUI 时,基本代码应为:
panel.add(...);
panel.revalidate();
panel.repaint();
revalidate() 将调用布局管理器为组件提供 size/location。 repaint() 确保所有组件都被绘制。