gpt4 book ai didi

java - Swing 小程序组件在与交互之前是不可见的

转载 作者:行者123 更新时间:2023-11-30 05:57:52 37 4
gpt4 key购买 nike

我正在尝试制作一个带有简单登录屏幕的小程序,如果我使用普通组件,它可以正常工作,但如果我使用 swing 组件,则对象在单击之前不会显示。我会使用常规组件,但我需要一个屏蔽密码字段(如果有非 Swing 版本,请告诉我)。

我正在尝试将垂直位置放置在左上角。

public class RdpApplet extends JApplet {
JButton Connect;
JTextField Username;
JPasswordField Password;
JLabel UsernameLabel;
JLabel PasswordLabel;

//(Snip)

public void paint(Graphics g){
}
public void start(){
}
public void stop(){
}
public void init(){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JPanel panel = new JPanel (new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(2,5,1,1);
gbc.weightx = 1.0;
gbc.anchor = GridBagConstraints.WEST;
gbc.gridwidth = GridBagConstraints.REMAINDER;

UsernameLabel = new JLabel("Username:");
panel.add(UsernameLabel,gbc);

Username = new JTextField(15);
panel.add(Username,gbc);

PasswordLabel = new JLabel("Password:");
panel.add(PasswordLabel,gbc);

Password = new JPasswordField(15);
panel.add(Password,gbc);

Connect = new JButton("Connect");
panel.add(Connect,gbc);
gbc.weighty = 1.0;
gbc.anchor = gbc.NORTHWEST;

setLayout(new FlowLayout(FlowLayout.LEFT));
add(panel);
validate();
panel.validate();
}});
}

//(Snip)
}

如果我使用 JButton、JTextField 和 JLabel,则在与它们交互之前,这些项目不会显示(单击文本字段,将鼠标悬停在按钮上,我无法显示标签),并且如果我使用正常的版本我在标签周围看到难看的灰色背景。

任何人都可以帮我看看我做错了什么以使一切正常工作。

编辑:从 Applet 更改为 JApplet 并没有解决问题。

编辑2:添加了其他方法。

编辑3:光标现在从用户名框中开始,但在交互之前所有内容仍然不可见。使用所有最新建议更新了代码。

最佳答案

您正在覆盖 paint 方法,而没有在其中执行任何操作。这会导致小程序的后代根本不会被绘制。

在 Swing 中,您通常应该从不覆盖 paint() 方法,仅覆盖 paintComponent() 方法(并且通常会调用 super.paintComponent(...)某处。)

在你的小程序中,看起来你根本不需要paint方法,只需删除它即可。

关于java - Swing 小程序组件在与交互之前是不可见的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5043457/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com