如何在鼠标右键单击时禁用JSlider的位置更改 [英] How to disable position change of JSlider on mouse right click

查看:226
本文介绍了如何在鼠标右键单击时禁用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆