[英]How can I make two GUI sliders work independently from one another using Java?
Here's the code I have been working on below: 这是我一直在下面处理的代码:
package ASG2;
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class GUI extends JFrame
{
JSlider slider;
JLabel label;
public GUI()
{
setLayout(new FlowLayout());
slider = new JSlider(JSlider.HORIZONTAL, 0, 5, 0);
slider.setMajorTickSpacing(1);
slider.setPaintTicks(true);
add(slider);
label = new JLabel("Current value: 0");
add(label);
event b = new event();
slider.addChangeListener(b);
setLayout(new FlowLayout());
slider = new JSlider(JSlider.HORIZONTAL, 0, 5, 0);
slider.setMajorTickSpacing(1);
slider.setPaintTicks(true);
add(slider);
label = new JLabel("Current value: 0");
add(label);
event c = new event();
slider.addChangeListener(c);
}
public class event implements ChangeListener
{
public void stateChanged(ChangeEvent a)
{
int value = slider.getValue();
label.setText("Current value: " + value);
}
}
public static void main(String args[])
{
GUI asg2 = new GUI();
asg2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
asg2.setSize(500,500);
asg2.setVisible(true);
asg2.setTitle("Slider program");
}
}
I got two sliders and only the bottom one is retrieving the current value. 我有两个滑块,只有最下面的一个正在检索当前值。 The top one is sliding correctly, but the current value won't change.
顶部滑动正确,但当前值不会更改。 Is there any way I can make both work independently from one another?
我有什么办法可以使两者彼此独立工作?
only the bottom one is retrieving the current value.
只有最底端的一个正在检索当前值。
slider = new JSlider(JSlider.HORIZONTAL, 0, 5, 0);
add(slider);
...
slider = new JSlider(JSlider.HORIZONTAL, 0, 5, 0);
That is because the "slider" variable is set to the last JSlider created. 这是因为“ slider”变量设置为最后创建的JSlider。
Get rid of the slider variable. 摆脱滑块变量。
Instead your listener code should be something like: 相反,您的侦听器代码应类似于:
public void stateChanged(ChangeEvent a)
{
JSlider slider = (JSlider)e.getSource(); // added
int value = slider.getValue();
label.setText("Current value: " + value);
}
So now you have access to the component that generated the event. 因此,现在您可以访问生成事件的组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.