我试图创建一个JFrame
,其中有JLabel
和按钮,并在另一个类中创建了一个方法PuttextNow
,该方法将文本设置为JLabel
。我已经读到,它应该使用多线程,这是更复杂的在我的部分。以下是我的代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
NewClass nc = new NewClass();
nc.putTextNow();
}
package test1;
public class NewClass {
public void putTextNow () {
NewJFrame nf = new NewJFrame();
nf.jLabel1.setText("OK!");
}
}
public NewJFrame() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("jLabel1");
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(layout.createSequentialGroup()
.addGap(114, 114, 114)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGap(23, 23, 23)
.addComponent(jButton1)))
.addContainerGap(179, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(96, 96, 96)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(43, 43, 43)
.addComponent(jButton1)
.addContainerGap(65, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
NewClass nc = new NewClass();
nc.putTextNow();
}
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
public javax.swing.JButton jButton1;
public javax.swing.JLabel jLabel1;
// End of variables declaration
//newclass.java
package test1;
public class NewClass{public void putTextNow(){
NewJFrame nf=new NewJFrame();nf.jlabel1.settext(“ok”);}}
NewJFrame nf = new NewJFrame();
nf.jLabel1.setText("OK!");
在NewClass
类中,您正在创建NewJFrame
的新实例。您正在尝试更新一个不在当前JFrame
中的标签(您所看到的那个)。您必须从newjframe
传递对jlabel
的引用,并从那里进行更新:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
NewClass nc = new NewClass();
nc.putTextNow(myJLabel);
}
newclass
变为
public class NewClass {
public void putTextNow (JLabel label) {
label.setText("OK!");
}
}
问题内容: 亲爱的大家,我遇到了挥杆相关的问题。由于违反公司政策,我无法共享代码,因此我将尽力解释该问题。 简而言之,我创建了一个扩展包含JLabel的JWindow的类。JLabel的文本是通过计时器对象随机更新的,该计时器对象使用scheduleAtFixedRate方法每50毫秒实例化一个TimerTask。JLabel中的值是通过在一个单独的线程(称为传输线程)中调用一个方法来检索的,该线
我想在构造函数外部或从另一个类更新已创建控件的JLabel。在这里,我创建了一个控件,并在构造函数中添加了一些组件。UI是在main中创建的,但是我想更新这个类之外的一些标签。所以我创建了setResult(最终字符串文本,最终字符串路径)来做这样的事情,但它不起作用。。。。 我的问题是setResult不起作用。我不知道为什么。有人能帮忙吗?谢谢
问题内容: 因此,我一直在试图弄清楚这一点,却无法弄清楚如何做到这一点。我希望另一个类中的按钮之一可以更改GUI类中JLabel的文本。 这是来自GUI类的代码:`import java.awt.Container; 这里是尝试更改JLabel“错误”的按钮中的代码: 问题答案: 首先,添加具有访问权限的吸气剂,以便您的第二堂课可以访问该字段。就像是, 或(如@MadProgrammer在评论中建
我有两个类和一个文本文件数据库,第一个类中的,我们将其称为自动设置为数据库中的数字。现在,在中,我有一个小的和一个文本字段,当然还有一个按钮,我在文本字段中的值会覆盖数据库中的值,但问题出在这里。第一个类中的标签在运行时不会更新,但如果我重新启动它,它会显示我想要的值。 如何在程序运行时更新它?我尝试在另一个类的中更改标签,但它每次都给我一个。 我怎么解决这个? 我希望这让我更容易理解我的问题。这
我想做一个应用程序,当我按下AddTask类中的save按钮时,文本输入中的文本将直接更新到Details类中的标签,但我所做的在那里不起作用…有谁能帮我一下吗?
问题内容: 我正在使用SWT编写桌面应用程序。从另一个线程更新GUI控件的最简单方法是什么? 问题答案: 根据需要使用Display.asyncExec或Display.syncExec。 例如,另一个线程可能调用此方法来安全地更新标签: 这里更多