2010-03-08 65 views
1

我有一個JSlider,它顯示下注大小(對於撲克遊戲)我試圖達到的效果,當發生鼠標點擊時,滑塊向下跳轉一個下注量(即a大盲注量)而不是僅增加一個。如果鼠標單擊發生在欄的左側,我希望它以一個固定的數量遞減。我研究瞭如何連接一個鼠標監聽器,但不知道如何使用這個事件來找出鼠標點擊的那一側。讓JSlider欄移動鼠標點擊事件

任何想法?

回答

4

你只需要改變你對問題的看法。

請勿將點擊視爲當前下注的「左」或「右」(下方或上方)。

相反,您只需存儲舊的刻度,然後查看新的刻度。差異將告訴您用戶是否曾嘗試增加(正增量)或減少(負增量)。

然後你可以通過你想要的'固定賭注'金額增加。

2

我認爲你需要爲此編寫一個自定義用戶界面。這應該讓你開始:

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); 
    } 
} 
+1

定製用戶界面,如果你希望能夠與他們的默認look'n'feel – Fortega 2010-03-08 16:38:25

+0

使用不同的操作系統程序(或操作系統的版本)都不好同意,我爲什麼要重寫Metal LAF。它給了海報一個選擇的選項。我們不能假定要求是使用「平臺」LAF。 – camickr 2010-03-08 17:04:25

1

我這是怎麼完成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 
});