我只是想将 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(使用前将#替换为@)