gpt4 book ai didi

java - 为什么java后台进程很慢?

转载 作者:行者123 更新时间:2023-12-04 17:15:18 28 4
gpt4 key购买 nike

请记住,我是 java 的新手,并且只将 C# 用于桌面应用程序。

我刚刚做了一个全新的项目,想在窗口打开时加载内容,我有一个带有 JPanel(swing) 的 JFrame,我测试了很多东西,直到我发现 windowOpened 是等效于 C# 中的 onload 方法,当尝试使用此事件加载内容时出现问题,经过多次尝试我没有得到任何东西所以我去了基本并调用了 System.out.print("测试");.

JFrame 已成功加载,但消息并未显示在控制台中,直到我关闭了窗口,然后添加了一个按钮来播放并添加了相同的打印,当单击该按钮时,我在控制台中什么也没有,直到我发送了垃圾邮件好像有 5 到 6 次,有点奇怪,所以我在打印后添加了一个 showMessageDialog,令我惊讶的是,消息对话框按预期工作,但打印仍然无法正常工作,直到我多次发送垃圾邮件。

这是我尝试加载内容的第三个全新项目,但它们似乎都以相同的方式工作,这是我的电脑有问题还是这是 java 的正常行为?我可以改变这种行为吗?执行此操作的正确方法是什么?

这是控制台日志:

cd PATH\NetBeansProjects\mavenproject1; "JAVA_HOME=C:\\Program Files\\Java\\jdk-16.0.2" cmd /c "\"PATH" -Dexec.vmArgs= -Dexec.args=\"${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs}\" -Dexec.appArgs= -Dexec.mainClass=.mavenproject1.NewJFrame -Dexec.executable=\"PATH" -Dmaven.ext.class.path=\"PATH"
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
Scanning for projects...

-----------------------< mavenproject1 >------------------------
Building mavenproject1 1.0
--------------------------------[ jar ]---------------------------------

--- exec-maven-plugin:3.0.0:exec (default-cli) @ mavenproject1 ---
not working as expectednot working as expectednot working as expectednot working as expectednot working as expectednot working as expectednot working as expectednot working as expectednot working as expectednot working as expectednot working as expectednot working as expected
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 13.098 s
Finished at: 2021-08-16T17:14:40-05:00
------------------------------------------------------------------------

代码如下:

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package .mavenproject1;

import javax.swing.JOptionPane;

/**
*
* @author
*/
public class NewJFrame extends javax.swing.JFrame {

/**
* Creates new form NewJFrame
*/
public NewJFrame() {
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});

jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(196, Short.MAX_VALUE)
.addComponent(jButton1)
.addGap(131, 131, 131))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(196, Short.MAX_VALUE)
.addComponent(jButton1)
.addGap(79, 79, 79))
);

pack();
}// </editor-fold>

private void formWindowOpened(java.awt.event.WindowEvent evt) {
System.out.print("not working as expected");
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
System.out.print("not working as expected");
javax.swing.JOptionPane.showMessageDialog(this,"","",JOptionPane.OK_OPTION);
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration
}

最佳答案

正如@apangin 所说,这是因为缓冲输出,通过简单地将 print 更改为 pringln,您可以看到我正在寻找的即时结果。

关于java - 为什么java后台进程很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68809833/

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