如何获得Jlabel的唯一标识符?

时间:2014-12-10 15:33:30

标签: java swing

我是java swing的新手,我是Jlabel的创造者,如下所示:

    JLabel Lport = new JLabel ("Port: ");
    final JTextField Tport = new JTextField ("1883", 10);

我想要做的是将标签的名称作为字符串,因为我想在switch-case中使用它,所以我需要获取标签名称或该标签的唯一标识符,一些像Android中存在的ID这样的东西,我尝试了方法“,getAction.toString”,“。getName”但是没有一个显示了labe的名称,根据发布的代码是“Port:”。请看下面我的尝试:

if ( (isIPReady(Tip)) && (isPortReady(Tport)) ) {
                    Thread mqttThread = new Thread(MQTTRunnable, MQTT_THREAD);
                    mqttThread.start();
                    System.out.println("Action: " + Tport.get); //here i do not know which method to use
                    setViewEnableState(Bconnect, true);
                }

3 个答案:

答案 0 :(得分:3)

简短回答是使用JLabel#getText,它将返回JLabel显示的文字。

另一种方法是将您自己的键值对存储到不同的JComponent实例中。每个JComponent都允许putretrieve客户端属性。来自javadoc类的复制粘贴:

  

支持特定于组件的属性。随着   putClientProperty(java.lang.Object,java.lang.Object)和   getClientProperty(java.lang.Object)方法,可以关联   名称 - 对象与任何从JComponent下降的对象。

这将允许你写:

private static final String ID_KEY = "MyUniqueIDKey";

JLabel label = new JLabel( "Whatever" );
label.putClientProperty( ID_KEY, "labelName" );

然后在

String labelName = (String) label.getClientProperty( ID_KEY );

请注意,这适用于任何JComponent,包括您在代码中使用的JLabelJTextField个实例。

答案 1 :(得分:1)

JLabel的名称与其显示的文字不同。要从JLabel获取文本,请使用getText()。

答案 2 :(得分:0)

您提到您需要标签的名称,但在您的示例中,您在文本字段中调用了get。

无论如何,这适用于文本字段和标签。

该构造函数设置将在文本字段(或标签)中显示的初始文本。

如果要设置名称,必须先使用setName()设置,然后使用getName()。