簡體   English   中英

從JSlider的值更改JLabel的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM