Java Swing JSlider滑塊的實(shí)現(xiàn)示例
1. 概述
官方JavaDocsApi: javax.swing.JSlider
JSlider,滑塊。
以圖形方式在有界區(qū)間內(nèi)通過移動(dòng)滑塊來選擇值的組件。
滑塊可以顯示主刻度標(biāo)記以及主刻度之間的次刻度標(biāo)記??潭葮?biāo)記之間的值的個(gè)數(shù)由 setMajorTickSpacing(int) 和 setMinorTickSpacing(int) 來控制??潭葮?biāo)記的繪制由 setPaintTicks(boolean) 控制。
滑塊也可以在固定時(shí)間間隔(或在任意位置)沿滑塊刻度打印文本標(biāo)簽。標(biāo)簽的繪制由 setLabelTable(Dictionary) 和 setPaintLabels(boolean) 控制。
PS: 當(dāng)滑塊獲得焦點(diǎn)后,按鍵盤上的 上下左右鍵 也可以滑動(dòng)滑塊。
JSlider 常用構(gòu)造方法:
/** * 參數(shù)說明: * orientation: 滑塊的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL,默認(rèn)為水平方向 * min: 滑塊的最小值 * max: 滑塊的最大值 * value: 滑塊的初始值(默認(rèn)為 最小值 和 最大值 之間的 中間值) */ JSlider() JSlider(int orientation) // 默認(rèn)的最小值、最大值、初始值值 分別為 0, 100, 50 JSlider(int min, int max) // 默認(rèn)初始值為 min 和 max 之間的 中間值 JSlider(int min, int max, int value) JSlider(int orientation, int min, int max, int value)
JSlider 常用方法:
// 設(shè)置滑塊的 最小值、最大值、當(dāng)前值 void setMinimum(int min) void setMaximum(int max) void setValue(int n) // 獲取滑塊的當(dāng)前值 int getValue() // 設(shè)置 主刻度標(biāo)記間隔 void setMajorTickSpacing(int n) // 設(shè)置單個(gè)主刻度內(nèi)的 次刻度標(biāo)記間隔 void setMinorTickSpacing(int n) // 設(shè)置是否繪制 刻度線 void setPaintTicks(boolean b) // 設(shè)置是否繪制 刻度標(biāo)簽(刻度值文本) void setPaintLabels(boolean b) // 設(shè)置是否繪制 滑道 void setPaintTrack(boolean b) // 設(shè)置滑塊的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL void setOrientation(int orientation) // 設(shè)置是否顛倒刻度值(刻度值從大到?。? void setInverted(boolean b) // 設(shè)置滑塊是否對(duì)齊到刻度。設(shè)置為 true,則滑塊最終只能在有刻度的位置取值,即滑塊取值不連續(xù)。 void setSnapToTicks(boolean b) // 用于指定將在 給定值處 繪制 對(duì)應(yīng)的標(biāo)簽 來替代刻度數(shù)值文本的顯示 void setLabelTable(Dictionary<Integer, JComponent> labels) // 添加滑塊的值改變監(jiān)聽器 void addChangeListener(ChangeListener l)
2. 代碼實(shí)例: 默認(rèn)刻度值
package com.xiets.swing; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main { public static void main(String[] args) { JFrame jf = new JFrame("測(cè)試窗口"); jf.setSize(250, 250); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel panel = new JPanel(); // 創(chuàng)建一個(gè)滑塊,最小值、最大值、初始值 分別為 0、20、10 final JSlider slider = new JSlider(0, 20, 10); // 設(shè)置主刻度間隔 slider.setMajorTickSpacing(5); // 設(shè)置次刻度間隔 slider.setMinorTickSpacing(1); // 繪制 刻度 和 標(biāo)簽 slider.setPaintTicks(true); slider.setPaintLabels(true); // 添加刻度改變監(jiān)聽器 slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { System.out.println("當(dāng)前值: " + slider.getValue()); } }); // 添加滑塊到內(nèi)容面板 panel.add(slider); jf.setContentPane(panel); jf.setVisible(true); } }
結(jié)果展示:
3. 代碼實(shí)例: 自定義標(biāo)簽刻度值
package com.xiets.swing; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.util.Hashtable; public class Main { public static void main(String[] args) { JFrame jf = new JFrame("測(cè)試窗口"); jf.setSize(250, 250); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel panel = new JPanel(); // 創(chuàng)建一個(gè)滑塊,最小值、最大值、初始值 分別為 0、20、10 final JSlider slider = new JSlider(0, 20, 10); // 設(shè)置主刻度間隔 slider.setMajorTickSpacing(5); // 設(shè)置次刻度間隔 slider.setMinorTickSpacing(1); // 繪制 刻度 和 標(biāo)簽 slider.setPaintTicks(true); slider.setPaintLabels(true); /* * 設(shè)置滑塊方向?yàn)榇怪狈较? */ slider.setOrientation(SwingConstants.VERTICAL); /* * 給指定的刻度值顯示自定義標(biāo)簽 */ Hashtable<Integer, JComponent> hashtable = new Hashtable<Integer, JComponent>(); hashtable.put(0, new JLabel("Start")); // 0 刻度位置,顯示 "Start" hashtable.put(10, new JLabel("Middle")); // 10 刻度位置,顯示 "Middle" hashtable.put(20, new JLabel("End")); // 20 刻度位置,顯示 "End" /* * 將刻度值和自定義標(biāo)簽的對(duì)應(yīng)關(guān)系設(shè)置到滑塊(設(shè)置后不再顯示默認(rèn)的刻度值) */ slider.setLabelTable(hashtable); // 添加刻度改變監(jiān)聽器 slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { System.out.println("當(dāng)前值: " + slider.getValue()); } }); // 添加滑塊到內(nèi)容面板 panel.add(slider); jf.setContentPane(panel); jf.setVisible(true); } }
結(jié)果展示:
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot @Autowired注解注入規(guī)則介紹
這篇文章主要介紹了SpringBoot @Autowired注解注入規(guī)則介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2021-11-11SpringBoot+MyBatisPlus對(duì)Map中Date格式轉(zhuǎn)換處理的方法詳解
在?SpringBoot?項(xiàng)目中,?如何統(tǒng)一?JSON?格式化中的日期格式。本文將為大家介紹一種方法:利用MyBatisPlus實(shí)現(xiàn)對(duì)Map中Date格式轉(zhuǎn)換處理,需要的可以參考一下2022-10-10SpringBoot+Spring Security+JWT實(shí)現(xiàn)RESTful Api權(quán)限控制的方法
這篇文章主要介紹了SpringBoot+Spring Security+JWT實(shí)現(xiàn)RESTful Api權(quán)限控制的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Mybatis-Plus根據(jù)自定義注解實(shí)現(xiàn)自動(dòng)加解密的示例代碼
我們把數(shù)據(jù)存到數(shù)據(jù)庫的時(shí)候,有些敏感字段是需要加密的,從數(shù)據(jù)庫查出來再進(jìn)行解密,如果我們使用的是Mybatis框架,那就跟著一起探索下如何使用框架的攔截器功能實(shí)現(xiàn)自動(dòng)加解密吧,需要的朋友可以參考下2024-06-06JPA框架實(shí)現(xiàn)分頁查詢和條件查詢功能詳解
這篇文章主要介紹了JPA框架實(shí)現(xiàn)分頁查詢和條件查詢功能,JPA是Java Persistence API的簡稱,在過去很多數(shù)據(jù)庫的增刪查改操作都是用這個(gè)框架操作的,感興趣想要詳細(xì)了解可以參考下文2023-05-05