首頁 > 軟體

Swing 滾軸元件怎麼用

2019-12-10 01:21:08

滾軸是程式中的一種常見元件,比如調節音量的滾軸,音樂播放器的進度滾軸等。Java Swing中也有滾軸元件:JSlider,那麼Java的滾軸元件要怎麼使用呢?接下來我們就來一起學習一下JSlider的使用方法。


1

滾軸(JSlider)是一個允許使用者在有限區間內通過移動滾軸來選擇值的元件。

構造方法1:JSlider()

建立一個範圍在 0~100 且初始值為 50 的水平滾軸



2

構造方法2:JSlider(int orientation)

使用指定的方向建立一個滾軸,範圍在 0~100 且初始值為 50

orientation:SwingConstants.VERTICAL(垂直方向),SwingConstants.HORIZONTAL(水平方向)



3

構造方法3:JSlider(int min,int max)

使用指定的最小值和最大值來建立一個水平滾軸,初始值等於最小值加上最大值的平均值



4

構造方法4:JSlider(int min,int max,int value)

用指定的最小值、最大值和初始值建立一個水平滾軸



1

常用方法:1、設定滾軸最小值:void setMinimum(int min)2、設定滾軸最大值:void setMaximum(int max)3、設定滾軸當前值:void setValue(int n)4、獲取滾軸的當前值:int getValue()5、設定主刻度標記間隔:void setMajorTickSpacing(int n)6、 設定單個主刻度內的 次刻度標記間隔:void setMinorTickSpacing(int n)7、設定是否繪製 刻度線(預設false):void setPaintTi
cks(boolean b)8、設定是否繪製 刻度標籤(預設false):void setPaintLabels(boolean b)9、設定是否繪製滑道(預設是true):void setPaintTrack(boolean b)10、 設定滾軸的方向:void setOrientation(int orientation)orientation的值為SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL11、設定是否顛倒刻度值(刻度值從大到小,預設false)void setInverted(boolean b)12、 設定滾軸是否對齊到刻度(預設false)。設定為 true之後,則滾軸只能停留在有刻度的地方即滾軸取值不連續:void setSnapToTicks(boolean b)13、 用於指定將在 給定值處 繪製 對應的標籤 來替代刻度數值文字的顯示:void setLabelTable(Dictionary<Integer, JComponent> labels)14、/新增滾軸的值改變監聽器:void addChangeListener(ChangeListener l)
ntation)orientation的值為SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL11、設定是否顛倒刻度值(刻度值從大到小,預設false)void setInverted(boolean b)12、 設定滾軸是否對齊到刻度(預設false)。設定為 true之後,則滾軸只能停留在有刻度的地方即滾軸取值不連續:void setSnapToTicks(boolean b)13、 用於指定將在 給定值處 繪製 對應的標籤 來替代刻度數值文字的顯示:void setLabelTable(Dictionary<Integer, JComponent> labels)14、/新增滾軸的值改變監聽器:void addChangeListener(ChangeListener l)

1

.建立一個0-100的滾軸,初始值是30,

.給滾軸新增自定義標籤(0:start,50:middle,100:end)

.給滾軸新增監聽器,滾軸值改變的時候會列印當前值在控制台。



2

Demo22_JSlider類程式碼:public class Demo22_JSlider {public static void main(String[] args) {JFrame frame=new JFrame("滾軸元件範例");SwingUtils.setCenter(frame);//設定表單大小600*800並居中? ? ? ? frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);? ? ? ? Container contentPane=frame.getContentPane();? ? ? ? JSlider slider=new
JSlider(0,100,30);? ? ? ? slider.addChangeListener(new ChangeListener() {@Overridepublic void stateChanged(ChangeEvent e) {System.out.println("當前值:"+slider.getValue());}});? ? ? ??? ? ? ? /*? ? ? ? ?* 給指定的刻度值顯示自定義標籤? ? ? ? ?*/? ? ? ? Hashtable<Integer, JComponent> hashtable = new Hashtable<Integer, JComponent>();? ? ? ? hashtable.put(0, new JLabel("Start"));? ? ? //? 0? 刻度位置,顯示 "Start"? ? ? ? hashtable.put(50, new JLabel("Middle"));? ? //? 10 刻度位置,顯示 "Middle"? ? ? ? hashtable.put(100, new JLabel("End"));? ? ? ?//? 20 刻度位置,顯示 "End"? ? ? ? slider.setLabelTable(hashtable);? ? ? ? slider.setMajorTickSpacing(10);//設定主刻度標記? ? ? ? slider.setMinorTickSpacing(5);//設定次刻度標記? ? ? ? slider.setPaintLabels(true);? ?? ? ? ? slider.setPaintTicks(true);? ? ? ? contentPane.add(slider);? ? ? ? frame.setVisible(true);? ? ?}}
stateChanged(ChangeEvent e) {System.out.println("當前值:"+slider.getValue());}});? ? ? ??? ? ? ? /*? ? ? ? ?* 給指定的刻度值顯示自定義標籤? ? ? ? ?*/? ? ? ? Hashtable<Integer, JComponent> hashtable = new Hashtable<Integer, JComponent>();? ? ? ? hashtable.put(0, new JLabel("Start"));? ? ? //? 0? 刻度位置,顯示 "Start"? ? ? ? hashtable.put(50, new JLabel("Middle"));? ? //? 10 刻度位置,顯示 "Middle"? ? ? ? hashtable.put(100, new JLabel("End"));? ? ? ?//? 20 刻度位置,顯示 "End"? ? ? ? slider.setLabelTable(hashtable);? ? ? ? slider.setMajorTickSpacing(10);//設定主刻度標記? ? ? ? slider.setMinorTickSpacing(5);//設定次刻度標記? ? ? ? slider.setPaintLabels(true);? ?? ? ? ? slider.setPaintTicks(true);? ? ? ? contentPane.add(slider);? ? ? ? frame.setVisible(true);? ? ?}}

3

SwingUtils?類程式碼:public class SwingUtils {public static void setCenter(JFrame jf) {int screenWidth=Toolkit.getDefaultToolkit().getScreenSize().width;int screenHeight=Toolkit.getDefaultToolkit().getScreenSize().height;?int jframeWidth = 800;int jframeHeight = 600;jf.setBounds((screenWidth/2)-(jframeWidt
h/2), (screenHeight/2)-(jframeHeight/2),?? ? ? ? jframeWidth, jframeHeight);}}

IT145.com E-mail:sddin#qq.com