Как изменить текст в JFileChooser? - PullRequest
3 голосов
/ 31 января 2011

В JFileChooser Компонент Java Swing Мне нужно изменить все текстовые элементы (для перевода):

Имя файла: (JLabel)

Файлы типа: (JLabel)

Отмена (JButton)

К сожалению, для этого нет никаких методов ..

Есть ли способ, которым я могу это сделать?

Спасибо!

Ответы [ 6 ]

2 голосов
/ 31 января 2011

Компоненты Swing в Java полностью способны понимать интернационализацию. Эта статья объясняет детали и показывает пример того, как этого можно достичь.

1 голос
/ 28 июля 2016

showDialog() используется для отображения настраиваемого диалогового окна (например, не диалоговое окно «Открыть» или «Сохранить»).У него есть параметр для указания текста кнопки «Подтвердить».Если заголовок не был установлен с помощью метода setDialogTitle(), реализация произвольно решит использовать текст кнопки подтверждения в качестве заголовка в ОС Windows, однако это нигде не задокументировано, и вы не должны рассчитывать на это для работы.

Если вы хотите пользовательский заголовок, используйте setDialogTitle().Если вы хотите пользовательский текст кнопки подтверждения, используйте setApproveButtonText().Очевидно, что showDialog() также принимает текст кнопки подтверждения, в этом случае вам не нужно вызывать setApproveButtonText() до.

Если вы хотите открыть диалог, используйте метод showOpenDialog().Если вы хотите сохранить диалог, используйте showSaveDialog().Используйте showDialog() только если вы хотите собственный диалог.

1 голос
/ 16 июня 2014
UIManager.put("FileChooser.fileNameLabelText", "FileName");
UIManager.put("FileChooser.filesOfTypeLabelText", "TypeFiles");
1 голос
/ 31 января 2011

Если вам нужно только перевести JFileChooser текст, я бы посоветовал вам изменить JFileChooser локаль (вызвав JFileChooser#setLocale(Locale)) вместо того, чтобы взломать ваш путь к JFileChooser его внутренним элементам.Действительно, все JFileChooser тексты зависят от локали.Как следствие, изменение языка на нужный вам изменит эти тексты с меньшими усилиями.

0 голосов
/ 29 августа 2017

Этот ответ является модифицированной версией, опубликованной Fasimba / Icewalker на форуме DevX Java . 1 Я процитировал его ответ, только изменив параметры поиска и замены.Я не принимаю кредит за выраженную в нем логику.

public void changeButtonText (Component c, String original, String change) {

   if (c instanceof JButton) {
       JButton b = (JButton) c;
       if (b.getText() != null && b.getText().equalsIgnoreCase(original))
           b.setText(change);
   } else if (c instanceof Container) {
        Container cont = (Container) c;
        for (int i = 0; i < cont.getComponents().length; i++) {
           changeButtonText (cont.getComponent(i), original, change);
        }
   }
}

Назовите это следующим образом:

// dirChooser is the JFileChooser instance
for (Component c : dirChooser.getComponents()) changeButtonText(c, "Cancel", "Don't do it!");

  1. Опубликовано в форум DevX Java от 23.06.2004, 08:06
0 голосов
/ 29 мая 2015

Обычно JFileChooser@setLocale(Locale) работает, как говорит Ридуидель. На Mac OSX, хотя это игнорируется.

В Mac OSX для правильной установки локали по умолчанию, которую вы называете UIManager.getLookAndFeelDefaults().setDefaultLocale(Locale); Обратите внимание, что это работает только для Java 8, а не для Java 7!

Похоже, что даже для каждого взгляда и ощущения вы используете UIManager.getDefaults().setDefaultLocale(Locale); для Аква смотри и чувствуй, что это не работает. Похоже, что в AquaFileChooserUI.java в методе protected void installStrings(JFileChooser paramJFileChooser) вызовы UIManager.getString() не используют локаль, тогда как другие методы installStrings (), например в BasicFileChooserUI используйте локаль в protected void installStrings(JFileChooser) способ.

Аква: UIManager.getString("FileChooser.cancelButtonText");

Базовый: UIManager.getString("FileChooser.cancelButtonText",l);

fileChooser.setLocale(Locale); все еще игнорируется в OSX.

...