2011-05-20 53 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)); 
} 
相关问题