[英]Changing a JLabel's Value from a JSlider's Value
我有一個JPanel,其中包含JSlider和JLabel。 我想對其進行配置,以便當用戶更改JSlider的值時,新值將由JLabel反映出來。
我了解可以使用Slider觸發ChangeEvents,但是我不知道如何向JLabel添加ChangeListener。 這是我的代碼片段。
scaleSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event)
{
int currentTime = ((JSlider)event.getSource()).getValue();
doSomething(currentTime);
fireStateChanged(event);
}
JLabel timeValue = new JLabel("Time: " + scaleSlider.getValue());
timeValue.add???
(我現在不知道該怎么做以反映滑塊中的更改)
我是否正朝着正確的方向前進? 在此先感謝您的幫助。
您不會在JLabel上監聽ChangeEvents。 您在JSlider上偵聽ChangeEvents,然后在stateChanged()方法中簡單地使用
label.setText("Time: " + scaleSlider.getValue());
也無需從ChangeLisetner觸發任何事件。
您無需向JLabel添加更改偵聽器。 如果您的JLabel是包含代碼的類的成員字段,則可以在JSlider的更改偵聽器中引用JLabel,如下所示:
public class Test() {
private JLabel label;
private void setup() {
label = new JLabel();
JSlider scaleSlider = new JSlider();
scaleSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
int currentTime = ((JSlider)event.getSource()).getValue();
label.setText(currentTime);
}
}
}
}
您可以引用任何內部類中的任何外部類的字段,甚至包括您在scaleSlider上聲明的匿名內部類ChangeListener。
您需要做的是將更改偵聽器添加到滑塊。
然后在您必須實現的change方法中,更改JLabel
本的值。
關於您的代碼,所有doSomething(int)
方法需要做的是:
label.setText(currentTime + "");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.