【问题标题】:Get variable from one Java class into GUI form Java class JLabel将变量从一个 Java 类获取到 GUI 形式 Java 类 JLabel
【发布时间】:2014-05-30 09:58:09
【问题描述】:

如果我在 DisplayForm.java GUI 中按下 connectBtn,我想在 DisplayForm.java GUI 中获得 device connected: true JLabel,但我无法获得变量 String connected = "true";当我在 DisplayForm.java 中按下 connectBtn 时,从 ArduinoDisplay.java 到 DisplayForm.java connectedDevice JLabel。

ArduinoDisplay.java 的一部分

    String connected = "";

    public void initialize() {
    if (portId == null) {
        System.out.println("Could not find COM port.");
        connected = "False";
        System.out.println("CONNECTED: " + connected + " PORT: " + devCom);
        return;
        } else if( portId != null) {
        connected = "True";
        System.out.println("CONNECTED: " + connected + " PORT: " + devCom);
        } else {
        connected = "False";
        System.out.println("CONNECTED: " + connected + " PORT: " + devCom);
    }
}

public static void main(String[] args) throws Exception {
    ArduinoDisplay main = new ArduinoDisplay();
    main.initialize();


    // Start GUI
    DisplayForm gui = new DisplayForm();
    gui.setVisible(true);
}

DisplayForm.java 的一部分

private void connectBtnActionPerformed(java.awt.event.ActionEvent evt) {
    ArduinoDisplay ad = new ArduinoDisplay();
    String devCon = ad.connected;
    deviceConnected.setText(devCon);
}

如果需要更多代码,请告诉我,谢谢

【问题讨论】:

  • 两个类是否在同一个包中?
  • 是的,两者都在 arduinodisplay 包中
  • 您从 ArduinoDisplay.java 提供的代码在单击按钮之前执行了吗?
  • 如果确实有关于端口的问题,那么您在 Swing 中遇到了 Concurency 的问题,更多的是在同名的 Oracle 教程中,每天 2-10 次关于 EDT 问题的问题
  • MihailBurduja,我要求将 DisplayForm 设置为在 ArduinoDisplay 中可见,所以是的,ArduinoDisplay 在单击按钮之前运行。@mKorbel 你的意思是“如果真的有关于端口的东西? "

标签: java swing class user-interface


【解决方案1】:

将连接的变量放在任何方法之外,并且不允许直接访问它(使用getter方法)

public class ArduinoDisplay {
    private String connected = "false":


public String getConnected (){
    return this.connected;
}
....
}

然后像这样得到它:

private void connectBtnActionPerformed(java.awt.event.ActionEvent evt) {
    ArduinoDisplay ad = new ArduinoDisplay();
    String devCon = ad.getConnected();
    deviceConnected.setText(devCon);
}

旁注:尝试使用布尔值而不是字符串。或者 Enum 的,如果你需要几个状态。它可以节省您的时间并消除开发人员的拼写错误

【讨论】:

  • 太棒了,谢谢你,还有一个问题,portId 在 public void initialize() 中检查,我怎样才能从那里得到它?
  • 在方法中创建的所有内容都保留在方法中。您从哪里获得 portID 的值?
  • 在同一个方法内。
  • 如果要在方法外访问变量,请在方法外创建它。所以做与connected |相同的事情getConnected();
  • 好的,确实有效,但是这样我将在 ArduinoDisplay 中一遍又一遍地获得相同的代码。无论如何,现在它已经足够好了,原型目的。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多