Java Swing:将JLabel添加到JPanel

And*_*Dev 3 java swing

我只是想将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)

我宁愿使用这个代码,所以如果你认为它更有可能工作(当然有一些修改),请随意评论.再次感谢!

Ale*_*man 7

这似乎是为了做一个基本的事情而跳过篮球; 简单地打电话

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)


Mad*_*mer 5

首先,你已经扩展了 JPanel

其次,你提供的是你自己的 JPanel

现在,从您的代码段,有没有办法来判断是否有ResultsPanemyPanel已被添加到Container任何类型的,但你说的话,我建议这将是您的首要问题.