gpt4 book ai didi

java - 每次在 NetBeans 上运行时,用户界面上的对象都会改变外观。为什么?

转载 作者:搜寻专家 更新时间:2023-11-01 03:20:44 24 4
gpt4 key购买 nike

我在 NetBeans 上编写了一个非常基本的用户界面,它有一个框架、一个标签作为框架中的标题,以及一个面板。该面板将包含标签和文本字段。我已经对前两个标签(员工 IDID 编号)和文本字段(txtempidtxtidno)进行了编码在面板中,但现在我的问题是每次我运行应用程序来测试它时,有时标签和文本字段都会显示,有时只显示 Employee ID 而没有其他显示,其他时候 Employee IDtxtempid 仅显示,或除 txtidno 之外的所有显示或一切显示正常。每次我运行该应用程序时,该面板中的对象都会以上述方式之一显示。我检查了我的编码,没有错误或警告,而且一切似乎都是 100%。是什么导致了这种现象?

下面是这个接口(interface)的代码:

import java.awt.*;
import javax.swing.*;

public class empManUI
{
public empManUI()
{ }

public void layout ()
{
JFrame empManipulate = new javax.swing.JFrame();
empManipulate.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
empManipulate.setSize(720,520);
empManipulate.setVisible(true);
JPanel panel = new javax.swing.JPanel();
panel.setLocation(230, 80);
panel.setSize(450,310);
panel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
panel.setLayout(null);
panel.setVisible(true);
empManipulate.add(panel);
empManipulate.setLayout(null);

JLabel lbltitle = new javax.swing.JLabel();
lbltitle.setText("Employees");
lbltitle.setFont(new java.awt.Font("Excelerate", 1, 42));
lbltitle.setBounds(60, 0, 620, 70);
lbltitle.setForeground(Color.RED);
empManipulate.add(lbltitle);
JLabel lblemp = new javax.swing.JLabel();
lblemp.setText("Employee ID: ");
lblemp.setFont(new java.awt.Font("Alexis", 1, 18));
lblemp.setBounds(20, 30, 170, 13);
lblemp.setVisible(true);
panel.add(lblemp);
JTextField txtempid = new javax.swing.JTextField();
txtempid.setBounds(200, 20, 230, 30);
txtempid.setVisible(true);
panel.add(txtempid);
JLabel lblidno = new javax.swing.JLabel();
lblidno.setText("ID Number: ");
lblidno.setFont(new java.awt.Font("Alexis", 1, 18));
lblidno.setBounds(20, 60, 170, 13);
lblidno.setVisible(true);
panel.add(lblidno);
JTextField txtidno = new javax.swing.JTextField();
txtidno.setBounds(200, 50, 230, 30);
txtidno.setVisible(true);
panel.add(txtidno);
}

public static void main (String[]args)
{
empManUI empUI = new empManUI();
empUI.layout();
}
}

最佳答案

尝试更换您的 main具有以下内容:

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
empManUI empUI = new empManUI();
empUI.layout();
}
});
}

看看这样做是否更好。

Swing特别的。您不能只从 main 运行它与运行命令行程序的方式相同。您需要以 GUI 操作在 AWT 事件队列中排队并由 Dispatch 线程处理的方式启动它。您可以通过调用 javax.swing.SwingUtilities.invokeLater(...) 来做到这一点或 java.awt.EventQueue.invokeLater(...) .

关于java - 每次在 NetBeans 上运行时,用户界面上的对象都会改变外观。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212601/

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