-1

我正在编写这个程序,最终我将从多维数组中获取信息到 JTextfields 中,该信息将取决于用户在“item2”中输入的内容。我的问题是我无法从“theHandler”类中获取任何类型的数据到 JTextfields 中。我尝试使用“setText”,但它告诉我它不能将 void 更改为字符串。我也可以将在处理程序类中获得的值用于“piezas”并在 GUI 上使用它,但我无法将值从 piezas 返回到 GUI。不知道在这里做什么。我已经准备好了数组,我只需要获取同一个类的值来编写一个开关,这样我就可以在 JTextfields 中获取信息。

所以基本上,我需要从处理程序类中获取“piezas”值到 Gui 类中(或者能够在处理程序类的 JTextfields 中输入文本)。

谢谢你的帮助!


我正在创建一个这样的 JTextField:

JTextField item1 = new JTextField(10);

在这里,我尝试为其设置文本:

String setValue = item1.setText("text");

这行不通。为什么?


关于我的编辑:完整的代码已被注释掉,而不是被删除。--MightyPork

4

2 回答 2

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");
于 2013-08-07T17:09:05.147 回答
1

我在您编辑之前复制了您的原始代码。Swing 应用程序应在事件分派线程 (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);
  }
}

处理程序类:

  public class thehandler implements ActionListener {
    public void actionPerformed(ActionEvent event) {
      String piezas = item2.getText();
      item1.setText(piezas);
    }
  }

请注意,我从您的原始代码中保留了此类的名称。但是这个类不遵守Java Beans 命名约定

使用item1.setText(item2.getText());作品。

于 2013-08-07T17:35:36.727 回答