Search code examples
javaswingmouseeventjlabeljtextfield

How to set the JText field with the JLabel clicked?


How can I set the JTextField with the JLabel just clicked?

What should I add in:

 public void mouseClicked(java.awt.event.MouseEvent evt) {
      jLabel2MouseClicked(evt);
 } 

 private void jLabel2MouseClicked(java.awt.event.MouseEvent evt) {

 }

Solution

  • I would also question the reasons for allowing clicking on labels. Why not use buttons?

    Anyway, assuming you do have a good reason, this is how you could do it:

        final JFrame frame = new JFrame();
        final JLabel label1 = new JLabel("Label 1");
        final JLabel label2 = new JLabel("Label 2");
        final JTextField textField = new JTextField();
        MouseListener mouseListener = new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                textField.setText(((JLabel) e.getSource()).getText());
            }
    
        };
        label1.addMouseListener(mouseListener);
        label2.addMouseListener(mouseListener);
        frame.add(label1, BorderLayout.NORTH);
        frame.add(label2, BorderLayout.CENTER);
        frame.add(textField, BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);