【问题标题】:Create JLabel in actionPerformed in Java在 Java 中的 actionPerformed 中创建 JLabel
【发布时间】:2012-01-29 19:50:47
【问题描述】:

您好,我有一个想要编程的 JButton,以便在按下时,屏幕上会显示一个新的 JLabel。我已将 JLabel 添加到框架中,并且它是可见的。它显示在 actionPerformed 之外,但不在其内部。

标签在方法外声明为lbl,然后在actionPerformed方法中创建

    public void actionPerformed(ActionEvent e) {

        JLabel lbl = new JLabel("ONE");
}

有人可以帮我在按下按钮时显示标签吗?谢谢

【问题讨论】:

  • 另见answer
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing jbutton jlabel


【解决方案1】:

这就是你的做法:

  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == buttonname){ 
        labelname.setVisible(true);

    }
}

还有,别忘了做

buttonname.addActionListener(this);

并在您布局表单的方法中添加:

yourPanel.Add(labelname)

希望这会有所帮助!

阿诺

【讨论】:

    【解决方案2】:

    您创建了 JLabel,但没有将它添加到任何容器中。这就是为什么它没有显示。您写的很好,您只需将标签添加到它应该在的容器上。

    JLabel lbl = new JLabel("ONE");
    yourPanel.Add(lbl);
    

    【讨论】:

    • 它还需要revalidate
    【解决方案3】:

    您还声明了它 actionPerformed 方法 - 这个声明可能隐藏了较早的一个(在方法之外)。您可以发布更多代码吗?以下代码对我来说很好用:

    public class NewLabel
    {
        public static void main(String[] args)
        {
    
            final JFrame frame = new JFrame();
    
            JButton button = new JButton("Add label");
    
            button.addActionListener(new ActionListener()
            {
    
                public void actionPerformed(ActionEvent e)
                {
    
                    JLabel lbl = new JLabel("ONE");
                    frame.add(lbl);
    
                    frame.setSize(100, 100);
                    // or you can't see the new button without resizing manually!
                }
            });
    
            frame.add(button);
            frame.pack();
            frame.setVisible(true);
    
        }
    }
    

    (在某些情况下,您可能还需要通过调用 revalidate() 来告诉容器/框架重新布局...)

    【讨论】:

    • 我使用的是框架,而不是容器。我尝试了框架的代码,但它没有工作
    • 一个JFrame一个容器。好吧,无论如何都是 Container 的子类。添加 JLabel 后是否尝试调用 frame.revalidate() 和 frame.repaint()?
    • 按钮链接正常,我可以让它 println 等只是不创建标签
    • 我已经编辑了代码,所以它是一个完整的示例而不是示例 sn-p(尽管我省略了导入)。我已经对此进行了测试,它对我有用...
    • 谢谢,由于某种原因,我做了同样的事情,但它仍然不起作用,我会调查一下。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2020-07-20
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2013-12-23
    相关资源
    最近更新 更多