Поведение Java UIManager - PullRequest
       4

Поведение Java UIManager

1 голос
/ 14 мая 2011

Я экспериментирую с Java UIManager и использую различные стили.Я быстро обнаруживаю, что это не просто вопрос установки внешнего вида в начале апплета и чудесным образом видные изменения в пользовательском интерфейсе.Я обнаружил, что с некоторыми LAF я обнаружу странные непредсказуемые действия и неудачи.Например, когда я установил шрифт JLabel в Arial с размером 8 и полужирным шрифтом, результирующий текст будет представлять собой одну черту «-» вместо указанного текста с использованием Windows или Classic Windows LAF.В других случаях, таких как Mac LAF, перестают работать JTrees (я реализую свое приложение на платформе Windows).Поэтому мне интересно, есть ли ряд шагов, которые необходимо выполнить при изменении Java LAF, чтобы любой выбранный мной LAF мог быть уверен в надежном и предсказуемом поведении остальных Swing?Только надежны ли LAF, а остальные только для смелых в глубине души?

Заранее благодарю за ответ.

Ответы [ 2 ]

2 голосов
/ 14 мая 2011

Я не знаю, как точно ответить на ваш вопрос.Все, что я могу сделать, это показать, как я запускаю свои приложения с разными пользовательскими интерфейсами, см. Ниже.Пример показывает, как я устанавливаю один из Look и Feels из библиотеки Substance .

        public static void main(String[] argv) throws InterruptedException, InvocationTargetException
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                @Override
                public void run()
                {
                    try
                    {
                        UIManager.setLookAndFeel(new SubstanceSaharaLookAndFeel());
                        //Some people say the below should also be called but even without it always worked for me so what is this for then?
                        //SwingUtilities.updateComponentTreeUI(frame);
                    }catch(Exception e)
                    {
                        Logger.getLogger(MyApplicationFrame.class.getName()).log(Level.SEVERE, null, e);
                        System.out.println("Substance look and feel failed to initialize");
                    }
                    new MyApplicationFrame();
                }
            });
        }

Что касается комментария в коде относительно вызова SwingUtilities.updateComponentTreeUI(frame);, я бы предположил, чтонеобходимо, когда вы меняете внешний вид, когда приложение уже запущено.

Надеюсь, это поможет вам.

1 голос
/ 14 мая 2011

Например, когда я установил шрифт JLabel в Arial с размером 8 и гранью жирного шрифта, результирующий текст будет представлять собой одну черту «-» вместо указанного текста.

Возможно, потому что ваш код не использует менеджеры макетов и где-то в вашем коде вы используете setBounds (...) или setPreferredSize ().

Так что мне интересно, есть линабор шагов, которые необходимо выполнить при изменении Java LAF, чтобы выбрать любой LAF.

Прочитайте раздел из учебника Swing по Изменение вида и ощущения дляобъяснения и рабочие примеры.

...