[英]How can I make two GUI sliders work independently from one another using Java?
這是我一直在下面處理的代碼:
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");
}
}
我有兩個滑塊,只有最下面的一個正在檢索當前值。 頂部滑動正確,但當前值不會更改。 我有什么辦法可以使兩者彼此獨立工作?
只有最底端的一個正在檢索當前值。
slider = new JSlider(JSlider.HORIZONTAL, 0, 5, 0);
add(slider);
...
slider = new JSlider(JSlider.HORIZONTAL, 0, 5, 0);
這是因為“ slider”變量設置為最后創建的JSlider。
擺脫滑塊變量。
相反,您的偵聽器代碼應類似於:
public void stateChanged(ChangeEvent a)
{
JSlider slider = (JSlider)e.getSource(); // added
int value = slider.getValue();
label.setText("Current value: " + value);
}
因此,現在您可以訪問生成事件的組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.