java的spinner_java中的spinner | 学步园
Java 2 SDK,1.4 beta 的最新發行版向 JFC/Swing
組件集添加了兩個強大的新組件。其中一個是
JSpinner
,它使用戶能夠方便地選擇日期、數字或拾取列表中的選項。(另一個是
JFormattedTextField
,用于支持格式化的輸入。)
JSpinner
使您可創建一個排序的值列表,該表在選擇框中每次顯示一個選項,如圖 1
所示。用戶通過點擊上移和下移箭頭進行選擇。
用戶使用組件或鍵盤上的上移和下移箭頭進行選擇。他們也可輸入自己的選擇。然而,與
JComboBox
不同,
JSpinner
不提供下拉列表選擇,所以各個選擇以及它們的順序應有一定的意義。
要使用類,可簡單地創建一個供選擇的元素集合(在
List
或數組中),從列表中創建一個
SpinnerModel
,并為模型創建一個
JSpinner
:
String[] months = new DateFormatSymbols().getMonths();
SpinnerModel model = new SpinnerListModel(months);
JSpinner spinner = new JSpinner(model);
執行取決于用于輸入值的編輯器。此編輯器必須是一個
JComponent
;系統定義的編輯器子類
JSpinner.DefaultEditor
。其中一個可用于每個模型:
JSpinner
組件象其它 Swing
組件一樣工作。如果您有興趣查出用戶更改選擇的時間,請連一個偵聽器。對于
JSpinner
,偵聽器是一個
ChangeListener
,您可直接將其連到
JSpinner
或其
SpinnerModel
上。雖然您可將偵聽器連到兩者中的任意一個,當值發生更改時,
ChangeEvent
的源總是
SpinnerModel
:
ChangeListener listener = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
SpinnerModel source = (SpinnerModel)e.getSource();
System.out.println("The value is: " + source.getValue());
}
};
model.addChangeListener(listener);
讓我們來看一下使用全部三種不同的 spinner 模型的示例(清單
3)。列表模型使用從
DateFormatSymbols
類取出的月份名稱集。日期模型示例更改編輯器的輸入格式。(beta
發行版中好象存在一處錯誤,當編輯器更改時不重新格式化字段。)當使用該字段旁邊的箭頭時,每次也可將日期移動一周。數字模型示例讓用戶選取從
0 到 100 之間的一個數字,當使用箭頭時每次跳 5
個數。請注意:用戶可輸入任意數字,而并不僅限于 5 的倍數。
對于所有組件來說,當每個 spinner
值確實發生更改時,所連的偵聽器將顯示同一改變。如果使用光標鍵更改月、日或年,您會注意到直到按下回車鍵這些值才發生更改。
import javax.swing.*;
import javax.swing.event.*;
import java.text.*;
import java.awt.*;
import java.util.*;
public class Spinner {
public static void main (String args[]) throws Exception {
JFrame frame = new JFrame("Spinner");
frame.setDefaultCloseOperation(3);
String[] months = new DateFormatSymbols().getMonths();
SpinnerModel model = new SpinnerListModel(months);
JSpinner spinner = new JSpinner(model);
frame.getContentPane().add(spinner, BorderLayout.NORTH);
SpinnerDateModel model2 = new SpinnerDateModel();
model2.setCalendarField(Calendar.WEEK_OF_MONTH);
JSpinner spinner2 = new JSpinner(model2);
JSpinner.DateEditor editor2 = new JSpinner.DateEditor(
spinner2, "MMMMM dd, yyyy");
spinner2.setEditor(editor2);
frame.getContentPane().add(spinner2, BorderLayout.SOUTH);
SpinnerNumberModel model3 = new SpinnerNumberModel(50, 0, 100, 5);
JSpinner spinner3 = new JSpinner(model3);
frame.getContentPane().add(spinner3, BorderLayout.CENTER);
ChangeListener listener = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
SpinnerModel source = (SpinnerModel)e.getSource();
System.out.println("The value is: " + source.getValue());
}
};
model.addChangeListener(listener);
model2.addChangeListener(listener);
model3.addChangeListener(listener);
frame.pack();
frame.show();
}
}
您可以參閱本文在 developerWorks 全球站點上的
英文原文
.
請為 spin 取出一個 JSpinner。下載我們在本文中使用的
源文件
。
請閱讀在正式的 1.4 發行版文檔中的
JSpinner
請利用其
javadoc
學習使用
JSpinner
。
請利用其
javadoc
學習使用
JFormattedTextField
。
Kelvin Lawrence 在
“Java
基本類:Java GUI 開發新標準”
中介紹了 JFC
的性能和靈活性(developerWorks,1998 年 5 月)。
Java 可訪問性復選列表,是 IBM 與 Sun Microsystems
共同努力的成果,可向您顯示如何創建可訪問的應用程序。
Checkpoint 2.1
特別討論了在應用程序中使用 JFC/Swing
組件的問題。
如果您使用 VisualAge for Java 開發 Java
應用程序,就應該閱讀本指南,它演示了
使用帶有 VisualAge for Java 的 Swing 組件
。
總結
以上是生活随笔為你收集整理的java的spinner_java中的spinner | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java炸弹游戏_java实现数字炸弹
- 下一篇: java swing事件监听_Java