我有一个显示下注大小的 JSlider(用于扑克游戏) 我试图实现这样的效果,即当发生鼠标单击时,滑块会向前跳一个下注量(即大盲注量),而不仅仅是增加一个。如果鼠标点击发生在栏的左侧,我希望它减少一个固定的量,否则增加。我研究了附加鼠标侦听器,但不知道如何使用该事件来找出鼠标被点击的栏的哪一侧。
有任何想法吗?
我有一个显示下注大小的 JSlider(用于扑克游戏) 我试图实现这样的效果,即当发生鼠标单击时,滑块会向前跳一个下注量(即大盲注量),而不仅仅是增加一个。如果鼠标点击发生在栏的左侧,我希望它减少一个固定的量,否则增加。我研究了附加鼠标侦听器,但不知道如何使用该事件来找出鼠标被点击的栏的哪一侧。
有任何想法吗?
你只需要改变你对问题的看法。
不要将点击视为当前投注的“左”或“右”(下方或上方)。
相反,您只需存储旧分时,然后查看新分时是什么。差异将告诉您用户是否尝试增加(正增量)或减少(负增量)。
然后您可以增加您想要的“固定投注”金额。
我认为您需要为此编写自定义 UI。这应该让你开始:
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;
import javax.swing.plaf.metal.*;
public class SliderScroll extends JFrame
{
public SliderScroll()
{
final JSlider slider = new JSlider(0, 50, 20);
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(5);
slider.setExtent(5);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
getContentPane().add( slider );
slider.setUI( new MySliderUI() );
}
class MySliderUI extends MetalSliderUI
{
public void scrollByUnit(int direction)
{
synchronized(slider)
{
int oldValue = slider.getValue();
int delta = (direction > 0) ? 10 : -5;
slider.setValue(oldValue + delta);
}
}
}
public static void main(String[] args)
{
JFrame frame = new SliderScroll();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
}
这就是我完成 MouseClickEvent 的方式
MoveSlider = new JSlider(JSlider.HORIZONTAL, 0, 0, 0);
MoveSlider.addMouseListener(new MouseListener()
{
public void mousePressed(MouseEvent event) {
//Mouse Pressed Functionality add here
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
});