如何在鼠标右键单击时禁用JSlider的位置更改 [英] How to disable position change of JSlider on mouse right click
本文介绍了如何在鼠标右键单击时禁用JSlider的位置更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的应用程序中使用 JSlider
。我只想左键单击幻灯片 JSlider
,我想禁用右键单击 JSlider
。我可以通过右键单击获取事件,但是滑块正在将其值更改为其他位置。
I am using a JSlider
in my application. I want only left click to slide JSlider
, and I want to disable right click for JSlider
. I am able to get event on right click, but slider is changing its value to other position.
jSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
//code
}
});
jSlider.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == java.awt.event.MouseEvent.BUTTON3) {
//code
} else {
//code
}
}
});
推荐答案
我使用的是JDK1.7.0_03,Windows 7
I am using JDK1.7.0_03, Windows 7
UIManager.put("Slider.onlyLeftMouseButtonDrag", Boolean.TRUE);
JDK1.6.0_31:
JDK1.6.0_31:
< a href =http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6614972 =nofollow>错误ID:6614972右键单击不应更改JSlider值
Bug ID: 6614972 JSlider value should not change on right-click
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.plaf.metal.MetalSliderUI;
public class SliderOnlyLeftMouseButtonDragTest {
public JComponent makeUI() {
JSlider slider00 = new JSlider(0,10,5);
JSlider slider01 = new JSlider(0,10,5);
slider01.setUI(new MetalSliderUI() {
protected TrackListener createTrackListener(JSlider slider) {
return new TrackListener() {
@Override public void mousePressed(MouseEvent e) {
if(!SwingUtilities.isLeftMouseButton(e)) {
return;
}
super.mousePressed(e);
}
};
}
});
JPanel p = new JPanel();
p.add(slider00);
p.add(slider01);
return p;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new SliderOnlyLeftMouseButtonDragTest().makeUI());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
这篇关于如何在鼠标右键单击时禁用JSlider的位置更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文