有时候,摆动文本字段有时不会显示?
我有一段代码,有时运行正常,有时没有。我从字面上看不会改变任何东西,但有时文本字段会出现,有时不会出现。代码如何可能每次都以不同的方式运行?对我来说完全是无稽之谈。我有理由对Java,但我肯定没有想到这是可能的...有时候,摆动文本字段有时不会显示?
如果有人能帮助我,你能不能包括修复,而且为什么发生这种情况?因为我想完全了解这个问题。
这里是我的代码:
import javax.swing.*;
public class Window {
JFrame frame;
JPanel panel;
public Window(int x, int y, String t, boolean isHomePage){
int xSize = x;
int ySize = y;
String title = t;
frame = new JFrame();
frame.setSize(xSize, ySize);
frame.setLocationRelativeTo(null);
frame.setTitle(title);
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
frame.add(panel);
panel.setLayout(null);
panel.setVisible(true);
if (isHomePage){
homePage();
}
}
public void homePage(){
JLabel usernameLabel = new JLabel();
usernameLabel.setText("Please enter your username:");
usernameLabel.setBounds(0,100,300,20);
panel.add(usernameLabel);
usernameLabel.setVisible(true);
JTextField textbox = new JTextField();
textbox.setVisible(true);
textbox.setBounds(280,100,400,20);
panel.add(textbox);
}
}
由于Reimeus州 -
- 使用布局管理器不为空布局。虽然Swing的新手可能看起来像是创建复杂GUI的最简单也是最好的方式,但更多Swing GUI的创建使用它们时会遇到更严重的困难。它们不会在GUI大小调整时调整组件的大小,它们是增强或维护的皇室女巫,当它们放在滚动窗格中时它们会完全失败,在所有平台或屏幕分辨率与原始视图不同时,它们看起来会非常糟糕。
- 将所有组件的图形用户界面,而不是之前之后也叫
setVisible(true)
上的JFrame 。
请注意,您对setVisible(true)的工作方式感到困惑。是的,你在你的子组件上调用它,但是默认情况下它们已经将它们的可见属性设置为true,所以在子组件上调用它不起作用。你的问题是当你在JFrame上调用setVisible的时候。您在添加带有文本字段的JPanel之前调用它,所以这会导致它偶尔出现。证明它为你自己。如果texzt字段不可见,则最小化和恢复您的GUI,现在应显示它。
我自己,如果我想你尽力以上做交换意见,我会使用一个CardLayout。
好吧,我明白了。但是,你能解释一下为什么它有时会起作用,而不是其他的?当然,如果它是一组代码,它应该每次都完全一样? – Cutter
@Cutter:那是因为你对如何'调用setVisible(真)'作品混淆。是的,你在你的子组件上调用它,但是默认情况下它们已经将它们的可见属性设置为true,所以在子组件上调用它不起作用。你的问题是当你在JFrame上调用setVisible的时候。在添加带有文本字段的JPanel之前,您正在调用它**,所以这会导致它偶尔出现。证明它为你自己。如果texzt字段不可见,则最小化和恢复您的GUI,现在应显示它。 –
好的,是的,谢谢你的好解释! – Cutter
使用布局管理器 – Reimeus