У меня есть настольное Java-приложение (редактор документов), для которого я недавно добавил строку меню, в которой, в свою очередь, есть пункты меню. Проблема в том, что - в моей рабочей среде GNOME (Ubuntu) разделители пунктов меню вообще не видны. Они видны, если я переключаю приложение L & F на Java (металлический) LaF по умолчанию или переключаю среду KDE среды рабочего стола в Ubuntu, но разделители пунктов меню никогда не видны в среде GNOME. Также я устанавливаю приложение L & F на «GTK». Если я заставлю L & F «мотивировать» разделители файлов, это будет хорошо видно.
Кто-нибудь еще сталкивался с подобной проблемой в среде Ubuntu GNOME? Я прилагаю приведенный ниже код - это просто и не думаю, что здесь есть какие-либо проблемы.
import java.awt.EventQueue;
import java.lang.reflect.InvocationTargetException;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
static JFrame frame = null;
static JMenuBar menubar = null;
static JMenu filemenu = null;
public static void main (String[] args) throws InterruptedException,
InvocationTargetException {
EventQueue.invokeAndWait(new Runnable () {
@Override
public void run() {
createAndShowGUI ();
}
});
}
private static void createAndShowGUI () {
/* Set LAF to GTK LAF */
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
/* Create frame */
frame = new JFrame ();
frame.setLocation(50, 50);
frame.setSize(400, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
/* Add menu bar */
addMenuBar ();
}
private static void addMenuBar () {
/* Create menu bar and then file menu*/
menubar = new JMenuBar ();
filemenu = new JMenu ("File");
/* Add three menu items to the file menu */
JMenuItem newItem = new JMenuItem ("New ");
JMenuItem openItem = new JMenuItem ("Open ");
JMenuItem exitItem = new JMenuItem ("Exit ");
/* Add the menu items to the file menu. Also separate the last item
* from the first two using a menu item separator */
filemenu.add(newItem);
filemenu.add(openItem);
filemenu.addSeparator();
filemenu.add(exitItem);
/* Add the file menu to the menu bar */
menubar.add(filemenu);
/* Add menu bar to frame */
frame.setJMenuBar(menubar);
}
}
Итак, вопрос в том, нужно ли мне добавить больше настроек при использовании L & F "GTK" в среде GNOME, чтобы разделители пунктов меню снова были видны?
[Редактировать: сообщение было отредактировано, чтобы отразить sscce. Если вы хотите увидеть эффект Java LAF, закомментируйте строки внутри createAndShowGUI (), где LAF жестко закодирован в GTK LAF. Проблема исчезает с Java LAF, но остается при использовании GTK LAF]