【问题标题】:How to set the JText field with the JLabel clicked?如何在单击 JLabel 的情况下设置 JText 字段?
【发布时间】:2012-04-21 04:31:45
【问题描述】:

如何设置JTextField 与刚刚点击的JLabel

我应该添加什么:

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

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

 }

【问题讨论】:

  • 您能否在示例代码中添加更多上下文,例如字段?另外,我怀疑您允许用户点击标签。
  • 是的,我允许用户单击标签。单击后,我希望在 JtextField 中设置标签。
  • 这看起来有点奇怪,但是您可以简单地使 jLabel 在单击它时不可见( setVisible(false) ),然后使位于同一位置的 Jtextfield 可见。不过不太确定您为什么会采用这种方法。
  • 不,我的 jtextfield 不在同一个地方。就像您在 jtextfield 中输入一个关键字,然后所有相关的单词都以 jlabels 的形式作为输出,现在用户可以单击其中一个 jlabels,该标签现在应该在 jtextfield 中设置。
  • 好吧,我假设你可以使用类似this.textField.setText(((JLabel)evt.getComponent()).getText()) 的东西。但仍然 - 用户是否知道点击标签,否则这些标签从不用于提供输入?

标签: java swing mouseevent jlabel jtextfield


【解决方案1】:

我也会质疑允许点击标签的原因。为什么不使用按钮?

无论如何,假设你有充分的理由,你可以这样做:

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

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    相关资源
    最近更新 更多