java 如何按钮和滑动条实现关联?

假如有一JButton对象button,和一个滑动条JSlider对象s,如何实现在按下button时,s会自动往右增加或者往左减少?... 假如有一JButton对象button,和一个滑动条JSlider对象s,如何实现在按下button时,s会自动往右增加或者往左减少? 展开
 我来答
雪飞潇潇
2015-11-07 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:867万
展开全部

举例 两种方式来实现的需求

第一种,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的意义吗?
追答
你都采纳了别人,然后来追问我??
00gaojun
推荐于2016-01-21 · TA获得超过707个赞
知道小有建树答主
回答量:333
采纳率:0%
帮助的人:155万
展开全部
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);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式