2011-05-20 76 views
3

我想創建一個帶有值的鋼筋。如果我移動該圓圈,那麼該字段中的值應該改變。我怎樣才能做到這一點? 這是屏幕截圖。我怎樣才能做到這一點?使用java的可移動鋼筋值

類似的東西也可以。請幫我解決一下這個。 預先感謝您:)

enter image description here

回答

9

SpinSlider可能是一個有用的例子。

附錄:下面是使用合適的格式字符串JSpinner.NumberEditor的示例。

附錄:您可以通過覆蓋paintTrack()來更改滑塊的顏色,如here所示。

SpinSlider image

import java.awt.EventQueue; 
import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JSlider; 
import javax.swing.JSpinner; 
import javax.swing.SpinnerNumberModel; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

/** @see https://stackoverflow.com/questions/6067898 */ 
public class SpinSlider extends JPanel { 

    public static void main(String args[]) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame f = new JFrame("SpinSlider!"); 
       f.add(new SpinSlider()); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       f.pack(); 
       f.setVisible(true); 
      } 
     }); 
    } 

    public SpinSlider() { 
     this.setLayout(new FlowLayout()); 
     final JSpinner spinner = new JSpinner(); 
     final JSlider slider = new JSlider(); 
     slider.addChangeListener(new ChangeListener() { 
      @Override 
      public void stateChanged(ChangeEvent e) { 
       JSlider s = (JSlider) e.getSource(); 
       spinner.setValue(s.getValue()); 
      } 
     }); 
     this.add(slider); 
     spinner.setModel(new SpinnerNumberModel(50, 0, 100, 1)); 
     spinner.setEditor(new JSpinner.NumberEditor(spinner, "0'%'")); 
     spinner.addChangeListener(new ChangeListener() { 
      @Override 
      public void stateChanged(ChangeEvent e) { 
       JSpinner s = (JSpinner) e.getSource(); 
       slider.setValue((Integer) s.getValue()); 
      } 
     }); 
     this.add(spinner); 
    } 
} 
+0

@SRIKANTH KV:我看到你的後續問題和解決上述問題。 – trashgod 2011-05-24 01:58:40

+0

+1像往常一樣非常好 – 2013-07-10 10:13:54

1

在的Java Swing你可以使用一個JSlider(已具有所需的模型和行爲),然後自定義其UI

+0

非常感謝你的一切幫助:)謝謝:)其工作完全正常:) – Srikanth 2011-05-21 06:12:11

5

要創建一個酒吧,一個值(滑塊),您可以使用JSlider類。當你創建這個類的實例時,你可以指定所有的參數,如min。和最大。值,步長等。

您可以將ChangeListener添加到滑塊。這個Changelistener應該實現方法stateChanged(),並且在這種方法中,您可以根據滑塊的位置更改文本框中顯示的值。

JSlider slider= new JSlider(JSlider.HORIZONTAL,0,100,50); //min value 0, max value 100, initial value 50 
slider.addChangeListener(this) 
JTextFox text = new JTextFox("50"); 
//Some other code, adding the the slider, text box (and other stuff) to the application 
//... 

public void stateChanged(ChangeEvent e) 
{ 
    JSlider source = (JSlider)e.getSource(); 
    int value = (int)source.getValue(); 
    text.setText(Integer.toString(value)); 
} 
相關問題