How to have a unique identifier of a Jlabel?

advertisements

I am new to java swing and I am creatin a Jlabel as follows :

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

what i want to do is to get the name of the label as a string because i want to use it in a switch-case, so i need to get the label name or a unique identifier of that label, some thing like an ID as it exists in Android, i tried the method ",getAction.toString", ".getName" but none of them displayed the name of the labe, which is according to the code posted is "Port: ". please see my attempts below:

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);
                }


The short answer is to use JLabel#getText which will return the text which is displayed by the JLabel.

An alternative could be to store your own key-value pair into the different JComponent instances. Each JComponent allows to put and retrieve client properties. A copy-paste from the class javadoc:

Support for component-specific properties. With the putClientProperty(java.lang.Object, java.lang.Object) and getClientProperty(java.lang.Object) methods, you can associate name-object pairs with any object that descends from JComponent.

This would allow you to write:

private static final String ID_KEY = "MyUniqueIDKey";

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

and then later on

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

Note that this works with any JComponent, including JLabel and JTextField instances like the ones you are using in your code.