2014-01-17 59 views
0

上午,Jpinner則setModel不允許使用旋轉選擇的時間和所面臨的問題,下面來改變值

StarttimeSpinner = new JSpinner(); 
Date time = new SimpleDateFormat("HHmmss", Locale.ENGLISH).parse("000000"); 
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 
String dateString = formatter.format(time); 
StarttimeSpinner.setModel(new SpinnerListModel(new String[]{dateString})); 

,此微調是一個JPanel。當我打開面板時,我無法改變微調值,它會自動重新分配給dateString值(00:00:00)。 我可以理解這是因爲setModel,但有無論如何我可以編輯值?

回答

1

當我打開面板,我不能改變微調值它的 自動重新分配給dateString值(00:00:00)。

事情是你想在一個單一的元素列表更改值:

StarttimeSpinner.setModel(new SpinnerListModel(new String[]{dateString})); 

JSpinner旨在允許用戶在其SpinnerModel定義可能值的列表中選擇一個選項。如果新值根據模型有效,則可以編輯微調器值。因此,在這種情況下,您無法編輯對微調模型有效的單個元素。

如果你的目標是使微調再一次選擇考慮使用SpinnerDateModel爲模型,並設置適當的編輯器來微調(見JSpinner.DateEditor類):

SpinnerDateModel model = new SpinnerDateModel(); 
JSpinner spinner = new JSpinner(model); 
spinner.setEditor(new JSpinner.DateEditor(spinner, "HH:mm:ss")); 

查看更多在此answer由@MoritzPetersen和How to Use Spinners教程。

1

嘗試這個例子:

import java.awt.Container; 
import java.awt.FlowLayout; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JSpinner; 
import javax.swing.SpinnerDateModel; 

public class Main { 
    public static void main(String args[]) { 
     JFrame frame = new JFrame("Demo Frame/SuRu"); 
     Container contentPane = frame.getContentPane(); 
     contentPane.setLayout(new FlowLayout()); 
     frame.setBounds(200, 200, 500, 100); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     SpinnerDateModel dateModel = new SpinnerDateModel(); 
     JSpinner jSpinner = new JSpinner(dateModel); 
     jSpinner.setEditor(new JSpinner.DateEditor(jSpinner, "hh:mm:ss dd/MM/yyyy")); 
     contentPane.add(new JLabel("Change Date: ")); 
     contentPane.add(jSpinner); 
     frame.setVisible(true); 
    } 
} 
+0

這是如何不同我的答案嗎? – dic19