JSpinner Buddhist Calendar Date Editor

Is there a way to use JSpinner.DateEditor with a Buddhist calendar? When I change my language to "th", "TH" and recreate my calendars, they are truly Buddhist calendars. However, JSpinners are not updated. Here is a sample code:

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 not doing what I'd expect. editor.getExpirationDateSpinner().setLocale(locale); editor.getExpirationDateSpinner().getEditor().setLocale(locale); 

Any ideas?

+2
source share
1 answer

Try setting the spinner 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

+2
source

Source: https://habr.com/ru/post/1383726/


All Articles