我是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);
}
答案 0 :(得分:3)
简短回答是使用JLabel#getText
,它将返回JLabel
显示的文字。
另一种方法是将您自己的键值对存储到不同的JComponent
实例中。每个JComponent
都允许put和retrieve客户端属性。来自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
,包括您在代码中使用的JLabel
和JTextField
个实例。
答案 1 :(得分:1)
JLabel的名称与其显示的文字不同。要从JLabel获取文本,请使用getText()。
答案 2 :(得分:0)
您提到您需要标签的名称,但在您的示例中,您在文本字段中调用了get。
无论如何,这适用于文本字段和标签。
该构造函数设置将在文本字段(或标签)中显示的初始文本。
如果要设置名称,必须先使用setName()设置,然后使用getName()。