我只是想将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);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:回应下面的即时回复,我同意这似乎是完全矫枉过正.我沿着这条路走下去,因为下面的代码也没有导致JLabel被添加到我的JPanel中:
JLabel myLabel = new JLabel("test");
pnlResults.add(myLabel);
Run Code Online (Sandbox Code Playgroud)
我宁愿使用这个代码,所以如果你认为它更有可能工作(当然有一些修改),请随意评论.再次感谢!
这似乎是为了做一个基本的事情而跳过篮球; 简单地打电话
JLabel label = new JLabel("Test text");//initialize the label
//do some stuff with label here maybe...
panel.add(label);//now add it
Run Code Online (Sandbox Code Playgroud)
没有必要让一个类扩展JPanel,并包含一个JPanel; 如果一个类扩展了JPanel,要获取JPanel实例,只需使用它(因此addLabel会改为执行this.setLayout(blah)).但是,当然没有必要将JPanel子类化为像添加JLabel这样简单的东西
总的来说,这是最简单的挥杆应用程序:
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
Run Code Online (Sandbox Code Playgroud)
首先,你已经扩展了 JPanel
其次,你提供的是你自己的 JPanel
现在,从您的代码段,有没有办法来判断是否有ResultsPane
或myPanel
已被添加到Container
任何类型的,但你说的话,我建议这将是您的首要问题.
归档时间: |
|
查看次数: |
25109 次 |
最近记录: |