java 如何按钮和滑动条实现关联?
假如有一JButton对象button,和一个滑动条JSlider对象s,如何实现在按下button时,s会自动往右增加或者往左减少?...
假如有一JButton对象button,和一个滑动条JSlider对象s,如何实现在按下button时,s会自动往右增加或者往左减少?
展开
2个回答
展开全部
举例 两种方式来实现的需求
第一种,JSlider 减少的时候, 点击按钮一下, JSlider移动一下
第二种,JSlider 增加的时候,点击按钮后,线程控制,自动向右移动
import java.awt.event.*;
import javax.swing.*;
public class JSliderDemo extends JFrame implements ActionListener{
JSlider jsl;
public JSliderDemo() {
jsl = new JSlider(0,100,50);
jsl.setMajorTickSpacing(20);//主刻度的间隔
jsl.setPaintTicks(true);//显示刻度
jsl.setPaintLabels(true);//显示刻度的文字
JButton jb1 = new JButton("减小");
jb1.setActionCommand("less");
jb1.addActionListener(this);
JButton jb2 = new JButton("增加");
jb2.setActionCommand("more");
jb2.addActionListener(this);
JPanel jp = new JPanel();
jp.add(jb1);
jp.add(jsl);
jp.add(jb2);
add(jp);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(300, 100, 360, 120);
setVisible(true);
}
public static void main(String[] args) {
new JSliderDemo();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("less")){
jsl.setValue(jsl.getValue()-1);//减少,每次减少一点,JSL移动一下
}
if(e.getActionCommand().equals("more")){//用线程增加
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while(jsl.getValue()<100){
jsl.setValue(jsl.getValue()+1);//每次增加一点
try {
Thread.sleep(100);//100毫秒暂停
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
});
t.start();//启动线程
}
}
}
追问
“ jb1.setActionCommand("less");”需要在其他地方声明less的意义吗?
追答
你都采纳了别人,然后来追问我??
展开全部
import java.awt.BorderLayout;
public class JSliderDemo extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JSliderDemo frame = new JSliderDemo();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private JSlider slider;
public JSliderDemo() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 0);
contentPane.add(slider, BorderLayout.CENTER);
JButton btn = new JButton("=>");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
slider.setValue(slider.getValue() + 1);
}
});
contentPane.add(btn, BorderLayout.SOUTH);
setContentPane(contentPane);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询