我正在编写这个程序,最终我将从多维数组中获取信息到JTextfields,信息将取决于用户在“item2”中输入的内容。我的问题是我无法从“theHandler”类中获取任何类型的数据到JTextfields中。我尝试使用“setText”,但它告诉我它不能将void更改为string。我也可以使用我在Handler类中获得的“piezas”值并在GUI上使用它,但我无法将值从piezas返回到GUI。不知道该怎么做。我已经准备好了数组,我只需要在同一个类上获取值来编写一个开关,这样我就可以在JTextfields中获取信息。
基本上,我需要从handler类中获取“piezas”值到Gui类中(或者能够从handler类中输入JTextfields中的文本)。
Thnx的帮助!
我正在创建一个像这样的JTextField:
JTextField item1 = new JTextField(10);
在这里,我尝试将文字设置为:
String setValue = item1.setText("text");
这不起作用。为什么呢?
关于我的编辑:完整代码已注释掉,未删除。 --MightyPork
答案 0 :(得分:6)
setText()
是正确的选择,只有您以奇怪的方式使用它。
String setValue = item1.setText("text");
setText()
没有返回值,因此错误为void
您不能将void分配给变量。
请改为尝试:
item1.setText("text");
或者,如果您想要值:
String setValue = "text";
item1.setText(setValue);
或者:
String setValue;
item1.setText(setValue = "text");
答案 1 :(得分:1)
我在编辑之前复制了原始代码。 Swing applications should be created and started on the event dispatch thread (EDT)。 TerminalVenta类看起来应该是这样的:
TerminalVenta.java
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class TerminalVenta {
public static void main (String[] args){
new TerminalVenta().start();
}
public void start() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
public void createAndShowGUI() {
Gui ob = new Gui();
ob.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ob.setSize(700,300);
ob.setVisible(true);
}
}
thehandler类:
public class thehandler implements ActionListener {
public void actionPerformed(ActionEvent event) {
String piezas = item2.getText();
item1.setText(piezas);
}
}
请注意,我保留了原始代码中此课程的名称。但是这个课程不遵守Java Beans naming conventions。
使用item1.setText(item2.getText());
有效。