2010-03-08 3 views
1

나는 포커 게임에 대해 내기 크기를 표시하는 JSlider가 있습니다. 마우스 클릭이 발생할 때 슬라이더가 내기 금액만큼 앞으로 이동하는 효과를 얻으려고합니다. 큰 장님 금액)보다는 하나씩 증가합니다. 마우스 클릭이 막대의 왼쪽에서 발생하면 고정 된 양만큼 증가시키기를 원합니다. 마우스 수신기를 연결하는 방법을 살펴 보았지만 이벤트를 사용하여 마우스 막대의 어떤 부분을 찾았는지 알 수 없습니다.마우스 클릭 이벤트로 이동하기 위해 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

사용자 정의 UI를 달성하면 기본 look'n'feel – Fortega

+0

와 다른 운영체제에서 프로그램 (또는 운영체제의 버전)를 사용할 수 있도록하려면 좋지 않은 방법입니다 동의 했어, 왜 내가 금속 LAF를 뒤집 었는지. 그것은 포스터에게 선택할 수있는 옵션을 제공합니다. 요구 사항이 "플랫폼"LAF를 사용하는 것이라고 가정 할 수는 없습니다. – camickr

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 
}); 
관련 문제