将JLabel添加到另一个Panel内的Panel内的Panel

时间:2014-04-28 18:51:13

标签: java swing jpanel jlabel

我有一个“主”面板。我想在主要面板中设置一个“侧面”面板。侧面由另外两个面板组成,让我们调用一个graphicPanel和一个supportPanel。我正在尝试从主要标签向SupportPanel添加标签,但不会发生任何变化。

这是我的侧面小组:

public class LateralSupportPane extends JPanel{

private final static int WIDTH = 240;
private final static int HEIGHT = 740;
private GraphicPanel gp;
private SupportPanel sp;


public LateralSupportPane(){
    this.gp = new GraphicPanel();
    this.sp = new SupportPanel();
    this.setPreferredSize(new Dimension(WIDTH, HEIGHT));
    this.setLayout(new GridLayout(2, 1));
    //this.setBorder(BorderFactory.createLineBorder(Color.black));
    this.add(gp);
    this.add(sp);

    this.setVisible(true);
}

    public void addLabel(String label){
    sp.addLabel(label);
}


public void paintComponent(Graphics g){
    super.paintComponent(g);
    gp.paintComponent(g);
}

public void addLabel(String label){
    sp.addLabel(label);
}

这是我的supportPanel:

public class SupportPanel extends JPanel{
private JLabel label;
private final static int WIDTH = 240;
private final static int HEIGHT = 370;

public SupportPanel(){

    this.setPreferredSize(new Dimension(WIDTH, HEIGHT));
    label = new JLabel();
    label.setText("<html>BlaBla</html>");
    this.setLayout(new GridLayout(10, 1));
    this.add(label);
    this.setVisible(true);
}

public JLabel getLabel() {
    return label;
}

public void addLabel(String text){
    JLabel label = new JLabel(text);
    if(this.getComponentCount() < 10){
        this.add(label);
    } else {
        this.remove(0);
        this.add(label);
    }
}

在主面板中,我调用侧面板的addLabel。

编辑:这是所有面板的框架。电路板本身是一个添加到框架中的面板。该板还有另一个面板,即黑色矩形和字符串所在的区域。然后侧面板由另外两个面板组成,即GraphicPanel(黑色矩形)和supportPanel,这是我想要标签的区域。

Board

验证所有面板没有任何进展。

1 个答案:

答案 0 :(得分:0)

不确定我是否正确使用它,但是接缝,你必须在插入新标签后验证你的面板;

public static void main(String[] args) {
    JFrame frame = new JFrame("test");
    frame.setSize(900, 600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new CardLayout());
    frame.setVisible(true);
    LateralSupportPane p = new LateralSupportPane();
    frame.add(p);
    frame.validate();
    p.addLabel("test 2");
    p.validate();
}

如您所见,在添加标签后,将执行验证并在表单上绘制对象。 你的方法addLabel(String label)应该在它结束时调用这个方法。