2016-04-26 92 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(); 
    } 
}