Java Swing:将 JLabel 添加到 JPanel

2024-04-14

我只是想将 JLabel 添加到现有的 JPanel 中。这看起来很简单,我已经查遍了。我认为这是正确的,但标签没有出现在我的面板上。有人看到我缺少什么吗?谢谢!

ResultsPanel myPanel = new ResultsPanel(pnlResults);  //pnlResults is an existing JPanel
myPanel.addLabel(pnlResults);

public class ResultsPanel extends JPanel {

    JPanel myPanel;

    public ResultsPanel(JPanel thisPanel) {
        myPanel = thisPanel;
    }

    public void addLabel(JPanel myResults) {
        JLabel myLabel = new JLabel("test", JLabel.LEFT);
        myPanel.setLayout(new FlowLayout());
        add(myLabel);        
    }

}

编辑:为了回应下面的立即回复,我同意这似乎完全是矫枉过正。我走这条路是因为以下代码也不会导致 JLabel 添加到我的 JPanel 中:

JLabel myLabel = new JLabel("test"); 
pnlResults.add(myLabel);

我更愿意使用这段代码,所以如果您认为它更有可能工作(当然需要进行一些修改),请随时对此发表评论。再次感谢!


这似乎只是为了做一件基本的事情而跳圈;只需致电

JLabel label = new JLabel("Test text");//initialize the label
//do some stuff with label here maybe...
panel.add(label);//now add it

无需让类扩展 JPanel 并包含 JPanel;如果一个类扩展了 JPanel,要获取 JPanel 实例,只需使用 this (因此 addLabel 会执行 this.setLayout(blah))。但当然,甚至不需要为 JPanel 子类化像添加 JLabel 这样简单的事情

总的来说,这几乎是最简单的 swing 应用程序:

    JFrame frame = new JFrame("Basic Swing");//Make a frame
    frame.setSize(300, 300);//Give it a size
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//Make it go away on close
    JPanel panel = new JPanel();//Make a panel
    frame.add(panel);//Add it to your frame

    JLabel label = new JLabel("Hello StackOverflow!");//Make a label
    panel.add(label);//Add it to the panel (which is on the frame)

    frame.setVisible(true);//Show the frame
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Swing:将 JLabel 添加到 JPanel 的相关文章

随机推荐