GUI 元素在调整窗口大小之前不会显示

2023-11-25

我一直在尝试用 java 制作 GUI,而不是一直使用“静态”,并遇到了“SwingUtilities.invokeLater()”方法。我设法完成所有设置,但在运行应用程序时,JPanel 上什么也没有出现,直到我调整窗口大小。有解决这个问题的方法还是我做错了?

这是我的代码:

public class main extends JPanel implements ActionListener{ 
public JLabel userLabel;
public JLabel passLabel;
public JTextField userField;
public JTextField passField;
public JButton login;
public JButton closeLogin;
public JButton help;

public main(){
    userLabel = new JLabel("Username: ");
    passLabel = new JLabel("Password: ");
    userField = new JTextField(16);
    passField = new JTextField(16);

    login = new JButton("Login");
    login.setActionCommand("login");
    login.setMnemonic(KeyEvent.VK_L);
    closeLogin = new JButton("Close");
    closeLogin.setActionCommand("closeLogin");
    closeLogin.setMnemonic(KeyEvent.VK_E);
    help = new JButton("Help");
    help.setActionCommand("helpLogin");
    help.setMnemonic(KeyEvent.VK_H);

    login.addActionListener(this);
    closeLogin.addActionListener(this);
    help.addActionListener(this);

    add(userLabel);
    add(userField);
    add(passLabel);
    add(passField);
    add(login);
    add(help);
    add(closeLogin);

}
public void actionPerformed(ActionEvent e){ 
}
public static void initComponents(){
    JFrame loginFrame = new JFrame("Encrypted Chat - Login");
    loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    main loginPanel = new main();
    loginPanel.setLayout(new FlowLayout());
    loginFrame.setSize(300, 125);
    loginFrame.setResizable(false);
    loginFrame.setVisible(true);        
}
public static void main(String args[]){
    SwingUtilities.invokeLater(new Runnable(){
        public void run(){
            initComponents();
        }
    });
}

}

编辑:我知道密码 JTextField 应该是 JPasswordField ..所以忽略它:P


两个基本建议:

1.)当您使用 swing,并且内容没有显示/更新时,您应该致电JPanel.revalidate() and JPanel.repaint()这两个函数将更新您的面板。 如果您使用的是 JFrame 并且没有向其中添加任何额外的面板,那么您可以通过以下方式获取内容面板JFrame.getContentPane()

2.)当您完成将组件添加到面板/框架后,您还应该调用pack()在框架上,这将确保您的所有组件都具有首选尺寸。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GUI 元素在调整窗口大小之前不会显示 的相关文章

随机推荐

  • 创建自定义 OnClickListener

    我有一个按钮数组列表 我的 OCL 需要知道我按下了哪个索引 计划是这样的 MyOnClickListener onClickListener new MyOnClickListener Override public void onCli
  • 对指针的 const 引用未按预期运行

    为什么我运行此程序时会出现错误 我原以为 ptr ref 无法修改 ptr 指向的地址 但事情似乎没有按计划进行 int b 3 int ptr b says something about cannot convert int to ty
  • LinkedIn 关注公司按钮显示空白页面

    我复制了代码这个链接通过提供公司名称并单击Get Code按钮 它生成了下面给出的代码 我将此代码粘贴到 html 文件的标签中 然后在 Chrome Firefox 和 IE 中运行该 html 文件 但所有浏览器都给出空白页面作为输出
  • 如何获取谷歌地图位置名称?

    我正在建立一个网站 需要获取所有谷歌地图位置 从国家名称到最小的村庄 这是api中的任何地方吗 因为它无处可寻 您需要解析响应以获取该数据 例如 如果您想获取国家 地区 结果是通过调用反向地理编码获得的结果对象 https develope
  • Xcode 9.1(和 9.2) - 引用的精灵不执行场景编辑器中添加的操作

    我在使用 SpriteKit 场景编辑器时遇到了一些意外的行为 想知道其他人是否也遇到同样的问题 我在场景中创建了一个精灵 并添加了动作以使用场景编辑器移动它 当我单击编辑器上的动画按钮时 动作运行良好 我使用场景编辑器中的 SKRefer
  • Delphi:如何在外部应用程序上正确使用ShowWindow [重复]

    这个问题在这里已经有答案了 也可以看看 如何判断我的程序的另一个实例是否已经在运行 我在启动应用程序之前使用以下代码来检查是否有另一个实例 其中已经开始 var PreviousHandle THandle begin PreviousHa
  • 适用于 .NET Framework 3.5 的 WebApi HttpClient [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 Net Framework 3 5 有可用的 WebApi 包吗 我特别期待使用 WebApi 的 HttpClient 组件 有没有适用于 Net
  • 泛型内存管理

    我对如何管理强类型泛型的内存有疑问 List
  • 为什么变量不更新?

    我目前正在编辑 AD 的新员工脚本 遇到了一个问题 我为主文件夹添加了 2 个单选按钮 一个单选按钮会将 BaseHomeFolderPath 更新为 Path1 第二个单选按钮会将其更新为 Path2 我导出变量到 csv 以验证它是否有
  • Spring 3.1中如何使用通配符加载xml资源文件

    我想加载 xml 文件 其中包含 Spring Maven 项目中多个模块的一些错误定义 我想加载文件 然后将其传递给 JAXB unmasheller 这就是我到目前为止所做的 String path classpath definiti
  • GC(分配失败)VS OutOfMemoryError异常

    内存不足错误 通常 当 Java 堆中没有足够的空间来分配对象时 会抛出此错误 GC 分配失败 分配失败 意味着存在大于年轻代可用空间的分配请求 这是否意味着年轻代内存已满 Minor GC 时会抛出Allocation Failure 而
  • BigQuery 通过查询获取表架构

    是否可以通过查询获取 BigQuery 表架构信息 就像是TABLES但对于模式 对 cli 方法不感兴趣 我想要实现的是在 2 个 BQ 表 比方说暂存和生产 之间执行 增量 更新 其具有基于 1 个 键 列的相同结构 但采用自动方式来创
  • 防止页面在新选项卡/窗口中打开

    我正在开发一个项目 当用户在新选项卡或新窗口中打开页面时 该项目的行为非常奇怪 导致应用程序崩溃 我需要一些 javascript 来帮助我防止这种情况 所以基本上我想阻止 ctrl 单击 鼠标中键 shift 单击 从上下文菜单在新选项卡
  • SQL 查找违反 UNIQUE 共同索引的行

    我想在表中的两个 或更多 列上放置唯一索引 但我得到 找到重复的键 如何选择那些导致重复的行 您可以使用Group By and Having为了这 SELECT col1 col2 FROM table GROUP BY col1 col
  • Github:权限被拒绝(公钥),但我收到“您已成功通过身份验证”消息

    我所做的步骤 https help github com articles generate ssh keys 完全遵循 eval ssh agent s Agent pid 31944 ssh add Enter passphrase f
  • 与 Mac 和 Linux 上的 exp 函数的结果略有不同

    以下 C 程序在我的 Mac 和 Linux 上产生不同的结果 我很惊讶 因为我认为实施libm以某种方式标准化 include
  • 使用 Exchangelib 将电子邮件标记为已读

    我正在使用Pythonexchangelib包裹 如何使用 Exchangelib 将电子邮件标记为已读 我已经看过了官方 GitHub Exchangelib 页面对于我的查询 但没有找到答案 要添加到 joe 的评论 您还必须 保存 该
  • Java Spring Boot 中的服务器端渲染 React

    我是服务器端渲染的新手 我想在服务器端渲染 React 组件并以 html 形式传递它 我按照本教程进行操作https spring io guides tutorials react and spring data rest 它仍在客户端
  • .NET 和 C# 初学者书籍? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想做一个项目 使用 NE
  • GUI 元素在调整窗口大小之前不会显示

    我一直在尝试用 java 制作 GUI 而不是一直使用 静态 并遇到了 SwingUtilities invokeLater 方法 我设法完成所有设置 但在运行应用程序时 JPanel 上什么也没有出现 直到我调整窗口大小 有解决这个问题的