java gui 窗口在启动时出现冻结现象是许多开发者常遇到的问题。这种情况下,用户无法进行任何操作,窗口看起来像是卡住了。究其原因,一般是因为窗口初始化过程中的某些操作耗时过长,导致界面无法正常响应。为了解决这个问题,我们需要找到冻结的原因,并采取相应的解决措施。在本篇文章中,php小编百草将为大家介绍一些常见的解决方法,帮助您解决java gui窗口启动时的冻结问题。
这是一个洗车的 gui 程序。包含两个类演示和总计,计算后将在新窗口中显示总计。一切工作正常,决定再运行一次以提交屏幕截图,但它卡住了,就像程序正在运行但窗口冻结一样。我正在使用 net bean 拖放方法。 在此输入图像描述 演示类
package car.wash_05;
public class demo extends javax.swing.jframe {
private double small_engine = 100.0;
private double big_engine = 200.0;
private double battery = 100.0;
private double oi_filter = 70.0;
private double brakes = 100.0;
private double gears = 100.0;
private double regular_wash = 50.0;
private double wash_compound = 100.0;
// declare variables to store the selected services
private boolean smallengineselected = false;
private boolean bigengineselected = false;
private boolean batteryselected = false;
private boolean oilandfilterselected = false;
private boolean brakesselected = false;
private boolean gearsselected = false;
private boolean regularwashselected = false;
private boolean washandcompoundselected = false;
// declare a variable to store the subtotal price
private double subtotal = 0.0;
public demo() {
system.out.println("before gui initialization");
initcomponents();
system.out.println("after gui initialization");
}
private void updatesubtotal() {
subtotal = 0.0;
if (smallengineselected)
subtotal += small_engine;
if (bigengineselected)
subtotal += big_engine;
if (batteryselected)
subtotal += battery;
if (oilandfilterselected)
subtotal += oi_filter;
if (brakesselected)
subtotal += brakes;
if (gearsselected)
subtotal += gears;
}
@suppresswarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="generated code">
private void initcomponents() {
jradiobutton2 = new javax.swing.jradiobutton();
jlabel1 = new javax.swing.jlabel();
jpanel1 = new javax.swing.jpanel();
jradiobutton1 = new javax.swing.jradiobutton();
jradiobutton3 = new javax.swing.jradiobutton();
jpanel2 = new javax.swing.jpanel();
jradiobutton4 = new javax.swing.jradiobutton();
jradiobutton5 = new javax.swing.jradiobutton();
jradiobutton6 = new javax.swing.jradiobutton();
jpanel3 = new javax.swing.jpanel();
jcheckbox1 = new javax.swing.jcheckbox();
jcheckbox2 = new javax.swing.jcheckbox();
jcheckbox3 = new javax.swing.jcheckbox();
jcheckbox4 = new javax.swing.jcheckbox();
jbutton1 = new javax.swing.jbutton();
jbutton2 = new javax.swing.jbutton();
jradiobutton2.settext("jradiobutton2");
setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);
settitle("auto tech and mech services");
setenabled(false);
jlabel1.settext("welcome to auto tech and mech services");
jpanel1.setborder(javax.swing.borderfactory.createetchedborder());
jpanel1.settooltiptext("");
jradiobutton1.settext("small");
jradiobutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jradiobutton1actionperformed(evt);
}
});
jradiobutton3.settext("big");
jradiobutton3.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jradiobutton3actionperformed(evt);
}
});
javax.swing.grouplayout jpanel1layout = new javax.swing.grouplayout(jpanel1);
jpanel1.setlayout(jpanel1layout);
jpanel1layout.sethorizontalgroup(
jpanel1layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup()
.addcontainergap()
.addgroup(jpanel1layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addcomponent(jradiobutton1)
.addcomponent(jradiobutton3))
.addcontainergap(10, short.max_value))
);
jpanel1layout.setverticalgroup(
jpanel1layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup()
.addgap(39, 39, 39)
.addcomponent(jradiobutton1)
.addgap(29, 29, 29)
.addcomponent(jradiobutton3)
.addcontainergap(javax.swing.grouplayout.default_size, short.max_value))
);
jpanel2.setborder(javax.swing.borderfactory.createetchedborder());
jpanel2.setname(""); // noi18n
jradiobutton4.settext("none");
jradiobutton4.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jradiobutton4actionperformed(evt);
}
});
jradiobutton5.settext("regular wash");
jradiobutton5.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jradiobutton5actionperformed(evt);
}
});
jradiobutton6.settext("wash & compound");
jradiobutton6.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jradiobutton6actionperformed(evt);
}
});
javax.swing.grouplayout jpanel2layout = new javax.swing.grouplayout(jpanel2);
jpanel2.setlayout(jpanel2layout);
jpanel2layout.sethorizontalgroup(
jpanel2layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup()
.addgroup(jpanel2layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addcomponent(jradiobutton4)
.addcomponent(jradiobutton5)
.addcomponent(jradiobutton6))
.addgap(0, 0, short.max_value))
);
jpanel2layout.setverticalgroup(
jpanel2layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup()
.addgap(28, 28, 28)
.addcomponent(jradiobutton4)
.addgap(28, 28, 28)
.addcomponent(jradiobutton5)
.addpreferredgap(javax.swing.layoutstyle.componentplacement.related, javax.swing.grouplayout.default_size, short.max_value)
.addcomponent(jradiobutton6)
.addgap(14, 14, 14))
);
jpanel3.setborder(javax.swing.borderfactory.createetchedborder());
jpanel3.settooltiptext("");
jpanel3.setname(""); // noi18n
jcheckbox1.settext("battery");
jcheckbox1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jcheckbox1actionperformed(evt);
}
});
jcheckbox2.settext("oil filters");
jcheckbox2.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jcheckbox2actionperformed(evt);
}
});
jcheckbox3.settext("brakes");
jcheckbox3.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jcheckbox3actionperformed(evt);
}
});
jcheckbox4.settext("gear");
jcheckbox4.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jcheckbox4actionperformed(evt);
}
});
javax.swing.grouplayout jpanel3layout = new javax.swing.grouplayout(jpanel3);
jpanel3.setlayout(jpanel3layout);
jpanel3layout.sethorizontalgroup(
jpanel3layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addgroup(jpanel3layout.createsequentialgroup()
.addcontainergap()
.addgroup(jpanel3layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addcomponent(jcheckbox1)
.addcomponent(jcheckbox2)
.addcomponent(jcheckbox3)
.addcomponent(jcheckbox4))
.addcontainergap(105, short.max_value))
);
jpanel3layout.setverticalgroup(
jpanel3layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addgroup(jpanel3layout.createsequentialgroup()
.addgap(19, 19, 19)
.addcomponent(jcheckbox1)
.addgap(18, 18, 18)
.addcomponent(jcheckbox2)
.addgap(18, 18, 18)
.addcomponent(jcheckbox3)
.addgap(18, 18, 18)
.addcomponent(jcheckbox4)
.addcontainergap(8, short.max_value))
);
jbutton1.settext("calculate");
jbutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton1actionperformed(evt);
}
});
jbutton2.settext("exit");
jbutton2.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton2actionperformed(evt);
}
});
javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(
layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup()
.addcontainergap()
.addcomponent(jpanel1, javax.swing.grouplayout.preferred_size, javax.swing.grouplayout.default_size, javax.swing.grouplayout.preferred_size)
.addpreferredgap(javax.swing.layoutstyle.componentplacement.related)
.addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addcomponent(jlabel1)
.addgroup(layout.createsequentialgroup()
.addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.trailing, false)
.addgroup(layout.createsequentialgroup()
.addcomponent(jbutton1)
.addpreferredgap(javax.swing.layoutstyle.componentplacement.related, javax.swing.grouplayout.default_size, short.max_value)
.addcomponent(jbutton2))
.addcomponent(jpanel3, javax.swing.grouplayout.preferred_size, javax.swing.grouplayout.default_size, javax.swing.grouplayout.preferred_size))
.addpreferredgap(javax.swing.layoutstyle.componentplacement.related)
.addcomponent(jpanel2, javax.swing.grouplayout.preferred_size, javax.swing.grouplayout.default_size, javax.swing.grouplayout.preferred_size)))
.addcontainergap(javax.swing.grouplayout.default_size, short.max_value))
);
layout.setverticalgroup(
layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup()
.addgap(12, 12, 12)
.addcomponent(jlabel1)
.addpreferredgap(javax.swing.layoutstyle.componentplacement.unrelated)
.addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.trailing, false)
.addcomponent(jpanel3, javax.swing.grouplayout.alignment.leading, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value)
.addcomponent(jpanel1, javax.swing.grouplayout.alignment.leading, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value)
.addcomponent(jpanel2, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value))
.addpreferredgap(javax.swing.layoutstyle.componentplacement.related)
.addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.baseline)
.addcomponent(jbutton1)
.addcomponent(jbutton2))
.addcontainergap(javax.swing.grouplayout.default_size, short.max_value))
);
jpanel1.getaccessiblecontext().setaccessiblename("");
jpanel2.getaccessiblecontext().setaccessiblename("");
pack();
}// </editor-fold>
//small engine ratio button
private void jradiobutton1actionperformed(java.awt.event.actionevent evt) {
smallengineselected = true;
bigengineselected = false;
jradiobutton3.setselected(false);
updatesubtotal();
}
//big engine ratio button
private void jradiobutton3actionperformed(java.awt.event.actionevent evt) {
bigengineselected = true;
smallengineselected = false;
jradiobutton1.setselected(false);
updatesubtotal();
}
//oil filter check button
private void jcheckbox2actionperformed(java.awt.event.actionevent evt) {
oilandfilterselected = jcheckbox2.isselected();
updatesubtotal();
}
//none ration button
private void jradiobutton4actionperformed(java.awt.event.actionevent evt) {
washandcompoundselected = false;
regularwashselected = false ;
jradiobutton5.setselected(false);
jradiobutton6.setselected(false);
}
//battery check button
private void jcheckbox1actionperformed(java.awt.event.actionevent evt) {
batteryselected = jcheckbox1.isselected();
updatesubtotal();
}
//brakes check button
private void jcheckbox3actionperformed(java.awt.event.actionevent evt) {
brakesselected = jcheckbox3.isselected();
updatesubtotal();
}
//gear check button
private void jcheckbox4actionperformed(java.awt.event.actionevent evt) {
gearsselected = jcheckbox4.isselected();
updatesubtotal();
}
//rugular was ration button
private void jradiobutton5actionperformed(java.awt.event.actionevent evt) {
regularwashselected = true;
washandcompoundselected =false;
jradiobutton6.setselected(false);
updatesubtotal();
}
//wash and compound ration button
private void jradiobutton6actionperformed(java.awt.event.actionevent evt) {
washandcompoundselected = true;
regularwashselected = false;
jradiobutton5.setselected(false);
updatesubtotal();
}
//calculate button
private void jbutton1actionperformed(java.awt.event.actionevent evt) {
double total = subtotal + (subtotal * 0.1);
double tax=subtotal * 0.1;
total totalframe = new total(total, subtotal, tax);
totalframe.setvisible(true);
}
//exit button
private void jbutton2actionperformed(java.awt.event.actionevent evt) {
system.exit(0);
}
public static void main(string args[]) {
java.awt.eventqueue.invokelater(new runnable() {
public void run() {
new demo().setvisible(true);
}
});
}
// variables declaration - do not modify
private javax.swing.jbutton jbutton1;
private javax.swing.jbutton jbutton2;
private javax.swing.jcheckbox jcheckbox1;
private javax.swing.jcheckbox jcheckbox2;
private javax.swing.jcheckbox jcheckbox3;
private javax.swing.jcheckbox jcheckbox4;
private javax.swing.jlabel jlabel1;
private javax.swing.jpanel jpanel1;
private javax.swing.jpanel jpanel2;
private javax.swing.jpanel jpanel3;
private javax.swing.jradiobutton jradiobutton1;
private javax.swing.jradiobutton jradiobutton2;
private javax.swing.jradiobutton jradiobutton3;
private javax.swing.jradiobutton jradiobutton4;
private javax.swing.jradiobutton jradiobutton5;
private javax.swing.jradiobutton jradiobutton6;
// end of variables declaration
}总班级
package car.wash_05;
public class Total extends javax.swing.JFrame {
public Total() {
}
public Total(double tota, double subtota, double ta) {
initComponents();
jLabel1.setText("Subtotal: $" + subtota);
jLabel2.setText("tax: $" + ta);
jLabel3.setText("Total: $" + tota);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Total");
jButton1.setText("Ok");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jLabel1.setText("jLabel1");
jLabel2.setText("jLabel2");
jLabel3.setText("jLabel3");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(32, 32, 32)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2)
.addComponent(jLabel1)
.addComponent(jLabel3)))
.addGroup(layout.createSequentialGroup()
.addGap(101, 101, 101)
.addComponent(jButton1)))
.addContainerGap(105, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(20, Short.MAX_VALUE)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton1)
.addContainerGap())
);
pack();
}// </editor-fold>
//ok button
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Total().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
// End of variables declaration
}我尝试添加检查,重新启动系统并重新安装java。它不起作用。它只是冻结,甚至关闭和其他按钮都不起作用,必须从任务管理器中强制选择它。
在 initcomponents 方法的第 75 行,您正在使用 setenabled(false) 这将禁用窗口及其所有子项(框架上的所有组件),因此感觉您的窗口是冻结。
要解决此问题,只需从以下代码中删除行 setenabled(false)
立即学习“Java免费学习笔记(深入)”;
/* rest of your code */
jradiobutton2.settext("jradiobutton2");
setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);
settitle("auto tech and mech services");
setenabled(false); //line causing this issue
jlabel1.settext("welcome to auto tech and mech services");
/* rest of your code */• 记住命名约定!避免将类命名为 demo.java,而是使用 demo.java。
• 其次,您不需要单独的方法来处理执行的操作,只需将其直接移动到 button.addactionlistener 的操作侦听器中。
• 第三(这是个人喜好),你不需要使用-
java.awt.eventqueue.invokelater(new runnable() {
public void run() {
new demo().setvisible(true);
}
});您可以使用 lambda 来缩短此代码(了解更多信息 这里)并使代码只有一行,如下所示。
java.awt.EventQueue.invokeLater(() -> new Demo().setVisible(true));
以上就是Java GUI 窗口将在启动时冻结的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号