我有一個JSlider,它顯示下注大小(對於撲克遊戲)我試圖達到的效果,當發生鼠標點擊時,滑塊向下跳轉一個下注量(即a大盲注量)而不是僅增加一個。如果鼠標單擊發生在欄的左側,我希望它以一個固定的數量遞減。我研究瞭如何連接一個鼠標監聽器,但不知道如何使用這個事件來找出鼠標點擊的那一側。讓JSlider欄移動鼠標點擊事件
任何想法?
我有一個JSlider,它顯示下注大小(對於撲克遊戲)我試圖達到的效果,當發生鼠標點擊時,滑塊向下跳轉一個下注量(即a大盲注量)而不是僅增加一個。如果鼠標單擊發生在欄的左側,我希望它以一個固定的數量遞減。我研究瞭如何連接一個鼠標監聽器,但不知道如何使用這個事件來找出鼠標點擊的那一側。讓JSlider欄移動鼠標點擊事件
任何想法?
你只需要改變你對問題的看法。
請勿將點擊視爲當前下注的「左」或「右」(下方或上方)。
相反,您只需存儲舊的刻度,然後查看新的刻度。差異將告訴您用戶是否曾嘗試增加(正增量)或減少(負增量)。
然後你可以通過你想要的'固定賭注'金額增加。
我認爲你需要爲此編寫一個自定義用戶界面。這應該讓你開始:
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
});
定製用戶界面,如果你希望能夠與他們的默認look'n'feel – Fortega 2010-03-08 16:38:25
使用不同的操作系統程序(或操作系統的版本)都不好同意,我爲什麼要重寫Metal LAF。它給了海報一個選擇的選項。我們不能假定要求是使用「平臺」LAF。 – camickr 2010-03-08 17:04:25