我有一个“主”面板。我想在主要面板中设置一个“侧面”面板。侧面由另外两个面板组成,让我们调用一个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,这是我想要标签的区域。
验证所有面板没有任何进展。
答案 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)
应该在它结束时调用这个方法。