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

标签 java swing applet

我正在尝试制作一个带有简单登录屏幕的小程序,如果我使用普通组件,它可以正常工作,但如果我使用 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/

相关文章:

java - 以编程方式创建虚拟串口

java - 禁用单个 ALT 类型来激活菜单

java - 使用 Java Swing 从 sprite 表绘图的最佳性能选项

java - 如何仅调用一次 componentResized 方法(当用户停止按住鼠标按钮时)?

java - 在Applet中显示图像

java - 无法在Java Applet中实现play方法,JMF安装不正确

java - Java中如何按位置拆分字符串

java - 由于 DDMS post create init,Eclipse 挂起

java - 我正在尝试在我的方法中使用小程序

java - 是否有用于 java.util.Optional 的 Hamcrest 匹配器?