2016-04-26 75 views
2

有人可以告诉我一般如何更改JPanel/TitledBorder的某些属性,如果我通过JSlider更改类变量?更新JPanel边框,如果JSlider更改

例如我有类变量“number”,并通过滑块上的stateChanged事件更改此var。现在我想实现在该面板的标题边框内显示数字的值。

panelX = new JPanel(new GridLayout(3,0)); 
    panelX.setBorder(new TitledBorder("P0: X = ")); 
    frame.add(panelX); 

    slider_x = new JSlider(0, 100); 
    slider_x.addChangeListener(this); 

    panelX.add(slider_x); 

@Override 
public void stateChanged(ChangeEvent e) 
{ 
    Object source = e.getSource(); 
    System.out.println(source); 
    hasChanged = true; 
    if(source instanceof JSlider) { 
     update(); 
    } 
} 

是否可以访问事件触发滑块连接到的面板的标题边框?

+0

您应该设置一个新的边界与新标题 –

+0

您的面板您需要TitledBorder'的'原始实例的引用,那么你可以使用['#的TitledBorder setTitle'(https://开头的文档.oracle.com/javase/8/docs/api/javax/swing/border/TitledBorder.html#setTitle-java.lang.String-) – MadProgrammer

+0

做一个真正可怕的方法可能是像'( (JComponent)((JSlider)e.getSource())。getParent())。getBorder()',但如果这不会炸毁你的脸,那么你非常非常幸运 – MadProgrammer

回答

2

您可以简单地设置面板的新边框。

@Override 
public void stateChanged(ChangeEvent e) 
{ 
    Object source = e.getSource(); 
    System.out.println(source); 
    hasChanged = true; 
    if(source instanceof JSlider) { 
     panelX.setBorder(new TitledBorder("P0: X = " + ((JSlider) source).getValue()); 
     update(); 
    } 
}