Java Swing JSlider滑塊的實現示例
1. 概述
官方JavaDocsApi: javax.swing.JSlider
JSlider,滑塊。
以圖形方式在有界區(qū)間內通過移動滑塊來選擇值的組件。
滑塊可以顯示主刻度標記以及主刻度之間的次刻度標記??潭葮擞浿g的值的個數由 setMajorTickSpacing(int) 和 setMinorTickSpacing(int) 來控制??潭葮擞浀睦L制由 setPaintTicks(boolean) 控制。
滑塊也可以在固定時間間隔(或在任意位置)沿滑塊刻度打印文本標簽。標簽的繪制由 setLabelTable(Dictionary) 和 setPaintLabels(boolean) 控制。
PS: 當滑塊獲得焦點后,按鍵盤上的 上下左右鍵 也可以滑動滑塊。
JSlider 常用構造方法:
/** * 參數說明: * orientation: 滑塊的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL,默認為水平方向 * min: 滑塊的最小值 * max: 滑塊的最大值 * value: 滑塊的初始值(默認為 最小值 和 最大值 之間的 中間值) */ JSlider() JSlider(int orientation) // 默認的最小值、最大值、初始值值 分別為 0, 100, 50 JSlider(int min, int max) // 默認初始值為 min 和 max 之間的 中間值 JSlider(int min, int max, int value) JSlider(int orientation, int min, int max, int value)
JSlider 常用方法:
// 設置滑塊的 最小值、最大值、當前值 void setMinimum(int min) void setMaximum(int max) void setValue(int n) // 獲取滑塊的當前值 int getValue() // 設置 主刻度標記間隔 void setMajorTickSpacing(int n) // 設置單個主刻度內的 次刻度標記間隔 void setMinorTickSpacing(int n) // 設置是否繪制 刻度線 void setPaintTicks(boolean b) // 設置是否繪制 刻度標簽(刻度值文本) void setPaintLabels(boolean b) // 設置是否繪制 滑道 void setPaintTrack(boolean b) // 設置滑塊的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL void setOrientation(int orientation) // 設置是否顛倒刻度值(刻度值從大到?。? void setInverted(boolean b) // 設置滑塊是否對齊到刻度。設置為 true,則滑塊最終只能在有刻度的位置取值,即滑塊取值不連續(xù)。 void setSnapToTicks(boolean b) // 用于指定將在 給定值處 繪制 對應的標簽 來替代刻度數值文本的顯示 void setLabelTable(Dictionary<Integer, JComponent> labels) // 添加滑塊的值改變監(jiān)聽器 void addChangeListener(ChangeListener l)
2. 代碼實例: 默認刻度值
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("測試窗口");
jf.setSize(250, 250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// 創(chuàng)建一個滑塊,最小值、最大值、初始值 分別為 0、20、10
final JSlider slider = new JSlider(0, 20, 10);
// 設置主刻度間隔
slider.setMajorTickSpacing(5);
// 設置次刻度間隔
slider.setMinorTickSpacing(1);
// 繪制 刻度 和 標簽
slider.setPaintTicks(true);
slider.setPaintLabels(true);
// 添加刻度改變監(jiān)聽器
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
System.out.println("當前值: " + slider.getValue());
}
});
// 添加滑塊到內容面板
panel.add(slider);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
結果展示:

3. 代碼實例: 自定義標簽刻度值
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("測試窗口");
jf.setSize(250, 250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// 創(chuàng)建一個滑塊,最小值、最大值、初始值 分別為 0、20、10
final JSlider slider = new JSlider(0, 20, 10);
// 設置主刻度間隔
slider.setMajorTickSpacing(5);
// 設置次刻度間隔
slider.setMinorTickSpacing(1);
// 繪制 刻度 和 標簽
slider.setPaintTicks(true);
slider.setPaintLabels(true);
/*
* 設置滑塊方向為垂直方向
*/
slider.setOrientation(SwingConstants.VERTICAL);
/*
* 給指定的刻度值顯示自定義標簽
*/
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"
/*
* 將刻度值和自定義標簽的對應關系設置到滑塊(設置后不再顯示默認的刻度值)
*/
slider.setLabelTable(hashtable);
// 添加刻度改變監(jiān)聽器
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
System.out.println("當前值: " + slider.getValue());
}
});
// 添加滑塊到內容面板
panel.add(slider);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
結果展示:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot集成tika實現word轉html的操作代碼
Tika是一個內容分析工具,自帶全面的parser工具類,能解析基本所有常見格式的文件,得到文件的metadata,content等內容,返回格式化信息,本文給大家介紹了SpringBoot集成tika實現word轉html的操作,需要的朋友可以參考下2024-06-06

