佛教日历中的JSpinner日期编辑器

问题描述:

有没有办法将JSpinner.DateEditor与佛教日历一起使用?当我将我的语言环境更改为“th”,“TH”并重新创建日历时,他们确实是佛教日历。但是,JSpinners不会更新。以下是一些示例代码:佛教日历中的JSpinner日期编辑器

Locale locale = new Locale("th", "TH"); 
Locale.setDefault(locale); 
// Reinitializing calendars with new locale, this is done correctly 
encodingCalendar = Calendar.getInstance(); 
expirationCalendar = Calendar.getInstance(); 
// Modifying the spinners in another class to update them with the correct locale 
// this is the part that's not doing what I'd expect. 
editor.getExpirationDateSpinner().setLocale(locale); 
editor.getExpirationDateSpinner().getEditor().setLocale(locale); 

任何想法?

尝试设置微调的语言环境:

import java.awt.EventQueue; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.Locale; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JSpinner; 
import javax.swing.SpinnerDateModel; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

public class JSpinnerTest extends JPanel { 

    public static void main(String args[]) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame f = new JFrame("JSpinnerTest"); 
       f.add(new JSpinnerTest()); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       f.pack(); 
       f.setVisible(true); 
      } 
     }); 
    } 

    public JSpinnerTest() { 
     final JLabel label = new JLabel(); 
     final JSpinner spinner = new JSpinner(); 
     spinner.setLocale(new Locale("th", "TH")); 
     Calendar calendar = Calendar.getInstance(); 
     Date initDate = calendar.getTime(); 
     calendar.add(Calendar.YEAR, -5); 
     Date earliestDate = calendar.getTime(); 
     calendar.add(Calendar.YEAR, 10); 
     Date latestDate = calendar.getTime(); 
     spinner.setModel(new SpinnerDateModel(
      initDate, earliestDate, latestDate, Calendar.MONTH)); 
     spinner.setEditor(new JSpinner.DateEditor(spinner, "MMM yyyy")); 
     spinner.addChangeListener(new ChangeListener() { 
      @Override 
      public void stateChanged(ChangeEvent e) { 
       JSpinner s = (JSpinner) e.getSource(); 
       label.setText(s.getValue().toString()); 
      } 
     }); 
     label.setText(initDate.toString()); 
     this.add(label); 
     this.add(spinner); 
    } 
} 

JSpinnerTest http://i47.tinypic.com/bfnloi.png

+0

我已经尝试过更新的语言环境,因为我张贴在我的示例代码。我尝试用新的javax.swing.SpinnerDateModel(expirationCalendar.getTime(),null,null,Calendar.MONTH)重新创建SpinnerDateModel,但那不起作用。 – Jon 2010-01-06 17:07:10

+0

我相信你必须设置*微调器的*语言环境。我已添加SSCCE和屏幕截图。 – trashgod 2010-01-07 15:02:27