2016-09-29 4 views
0

Можно ли изменить формат, в котором виджет DataTime diplays date? Дело в том, что, хотя я установил языковой стандарт, который использует европейский формат (dd/mm/yyyy), у меня все еще есть виджет DateTime в формате mm/dd/yyyy.SWT DateTime не учитывает локаль

Редактировать: Были ответы на вопросы о SO по строкам «Как изменить формат DateTime», и на них ответили что-то вроде «изменение языкового стандарта и адаптация DateTime». Мой вопрос касается ситуации, когда изменение языкового стандарта не влияет на виджет DateTime. Что может быть неправильным? Есть ли какое-либо другое решение для изменения формата форматирования?

+0

Возможный дубликат [SWT DateTime изменения формата] (http://stackoverflow.com/questions/34632492/swt- datetime-format-change) –

+0

@ RüdigerHerrmann Я просто хочу указать, что это не дублирующий вопрос, и я отредактировал сообщение, чтобы объяснить, почему. – BanzaiTokyo

+1

Я все еще думаю, что это дубликат http://stackoverflow.com/questions/34632492/swt-datetime-format-change. Прочитайте ответы, и вы узнаете, что SWT DateTime не заботится о изменениях языковой среды Java, поскольку использует формат даты ОС. И это также отвечает на ваш вопрос, верно? –

ответ

1

После запуска некоторых тестов в Linux я могу подтвердить, что виджет DateTime, похоже, не использует локаль ОС. Кажется, это ошибка, и вы должны сообщить об этом.

Что вы можете сделать в то же время является использование Nebula's CDateTime, который поддерживает Java Locale S:

public static void main(String[] args) 
{ 
    Display display = new Display(); 
    final Shell shell = new Shell(display); 
    shell.setText("StackOverflow"); 
    shell.setLayout(new FillLayout()); 

    Locale.setDefault(Locale.GERMAN); 
    CDateTime cdt = new CDateTime(shell, CDT.DATE_SHORT); 
    cdt.setSelection(new Date()); 

    Locale.setDefault(Locale.ENGLISH); 
    cdt = new CDateTime(shell, CDT.DATE_SHORT); 
    cdt.setSelection(new Date()); 

    shell.pack(); 
    shell.open(); 
    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
      display.sleep(); 
    } 
    display.dispose(); 
} 
+0

Отлично! это работает как шарм! Особенно круто, что вы можете изменить локаль от кода и быть независимым от настроек ОС. Ура! – BanzaiTokyo

Смежные вопросы