JToolbar не отображается в Ubuntu, если установлено значение BasicToolBarUI - PullRequest
0 голосов
/ 11 октября 2010

Я решил иметь свой собственный пользовательский интерфейс JToolBar. создание подкласса BasicToolBarUI как часть моей программы Swing.

Отлично работает под OS X (10.6) и Windows (7), но когда дело доходит до Linux, возникает проблема:

Если компонент качания равен

  • Использование SystemLookAndFeel (с Java LAF показано)
  • Использование пользовательского интерфейса BasicToolBarUI (Чтобы упростить проблему. С этим она уже не работает)
  • работает под Linux (Ubuntu 10.10)

все JToolBar больше не появляется .

Кто-нибудь может помочь? Как заставить его появиться снова в Linux? Заранее спасибо.

(я сделал пользовательский интерфейс для того, чтобы дать пользователю возможность перемещать панель инструментов к другим краям окна, но не позволяйте ему перейти в плавающее состояние.)

Приветствия
Шо


Мой SSCCE:

// Set the system look and feel:
try { 
 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
 e.printStackTrace();
}

// Create frame
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(200, 100));

// Create toolbar
JToolBar toolbar = new JToolBar(JToolBar.HORIZONTAL);
toolbar.add(new JButton("Foo"));
// With this line toolbar doesn't appear any more (only) on Linux.
toolbar.setUI(new BasicToolBarUI());

// Show UI
panel.add(toolbar);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);

1 Ответ

0 голосов
/ 11 октября 2010

Вы можете не видеть его, потому что вы ничего не добавили к нему (действия, кнопки и т. Д.). Пустая панель инструментов обычно имеет высоту 1-2 пикселя.

UPDATE : Из того, что я могу сказать, посмотрев на BasicToolBarUI, он на самом деле ничего не делает - вы должны выполнить расчеты размера и нарисовать себя, чтобы получить надлежащие результаты

...