C語言中文網 目錄
首頁 > Java Swing 閱讀:930

Java Swing JSlider:滑塊組件

在前面的章節中,我們介紹了 Swing 設計簡單界面所需的窗口、布局組件以及如何響應事件。Swing 還提供了很多高級組件,如菜單欄、工具欄、文件選擇器、表格以及樹等。使用這些高級組件可以實現更為復雜的布局,也可以使程序界面更加人性化,以提高程序的靈活性。在之后的章節中,我們將開始詳細介紹這些高級組件。

在學習其他高級組件之前,我們先來介紹一些布局組件,包括滑塊、進度條、計時器、菜單欄和工具欄,本節我們首先來介紹滑塊。

滑塊(JSlider)是一個允許用戶在有限區間內通過移動滑塊來選擇值的組件。JSlider 類的常用構造方法如表 1 所示。

表1 JSIider類的常用構造方法
構造方法 說明
JSlider() 創建一個范圍在 0~100 且初始值為 50 的水平滑塊
JSlider(BoundedRangeModel brm) 使用指定的 BoundedRangeModel 創建一個水平滑塊
JSlider(int orientation) 使用指定的方向創建一個滑塊,范圍在 0~100 且初始值為 50
JSlider(int min,int max) 使用指定的最小值和最大值來創建一個水平滑塊,初始值等于最小值加上最大值的平均值
JSlider(int min,int max,int value) 用指定的最小值、最大值和初始值創建一個水平滑塊

例如,創建一個最小值為 30,最大值為 120,初始值為 55 的水平滑塊的語句如下所示。
JSIider slider=new JSIider(30,120,55);

滑塊可以顯示主刻度標記以及主刻度之間的次刻度標記??潭葮擞浿g的值的個數由 setMajorTickSpacing() 方法和 setMinorTickSpacing() 方法來控制??潭葮擞浀睦L制由 setPaintTicks() 方法控制。

滑塊也可以在固定時間間隔(或在任意位置)沿滑塊刻度打印文本標簽,標簽的繪制由 setLabelTable() 方法和 setPaintLabels() 方法控制。

JSIider 類常用方法如表 2 所示。

表2 JSIider類常用方法
方法名稱 說明
createStandardLabels(int increment) 創建一個數字文本標簽的 Hashtable,從滑塊最小值處開始增加,并使用指定的增量
getLabelTable() 返回哪些標簽在哪些刻度繪制的字典
getMaj orTickSpacing() 返回主刻度標記的間隔
getMaximum() 從 BoundedRangeModel 返回滑塊所支持的最大值
getMinimum() 從 BoundedRangeModel 返回滑塊所支持的最小值
getMinorTickSpacing() 返回次刻度標記的間隔
getSnapToTicks() 如果滑塊(及其所表示的值)解析為最靠近用戶放置滑塊處的刻度標記的值,則返回為 true
getValue() 從 BoundedRangeModel 返回滑塊的當前值
setLabelTable(Dictionary labels) 用于指定將在給定值處繪制哪個標簽
setMaj orTickSpacing(int n) 此方法設置主刻度標記的間隔
setMaximum(int maximum) 將滑塊的最大值設置為 maximum
setMinimum(int minimum) 將滑塊的最小值設置為 minimum
setMinorTickSpacing(int n) 設置次刻度標記的間隔
setOrientation(int orientation) 將滑塊的方向設置為 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL
setPaintLabels(boolean b) 確定是否在滑塊上繪制標簽
setPaintTicks(boolean b) 確定是否在滑塊上繪制刻度標記
setPaintTrack(boolean b) 確定是否在滑塊上繪制滑道
setSnapToTicks(boolean b) 指定為 true,則滑塊(及其所表示的值)解析為最靠近用戶放置滑塊處的刻度標記的值
setValue(int n) 將滑塊的當前值設置為 n

例 1

在了解 JSIider 類的基礎語法之后,下面創建一個滑塊實例。實例非常簡單,僅僅包含一個滑塊,實例源代碼如下所示。
package ch18;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JSlider;
public class JSliderDemo
{
    public static void main(String[] agrs)
    {
        JFrame frame=new JFrame("滑塊組件示例");
        frame.setSize(100,100);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane=frame.getContentPane();
        JSlider slider=new JSlider(0,100);
        slider.setMajorTickSpacing(10);
        slider.setMinorTickSpacing(5);
        slider.setPaintLabels(true);   
        slider.setPaintTicks(true);
        contentPane.add(slider);
        frame.setVisible(true);       
    }
}

上述代碼首先創建一個 JFrame 窗口并進行必要屬性設置,接著創建一個 JSIider 對象,設置最小值為 0,最大值為 100,然后設置滑塊對象的刻度值。運行此時的實例程序,效果如圖 1 所示。

無刻度和標簽的滑塊
圖1 無刻度和標簽的滑塊

如果需要在滑塊上添加刻度或標簽,可以在“contentPane.add(slider);”前添加下面兩行語句:
slider.setPaintLabels(true);
slider.setPaintTicks(true);

再次運行程序,此時滑塊的運行效果如圖 2 所示。

具有刻度和標簽的滑塊
圖2 具有刻度和標簽的滑塊

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo