1) Глядя на исходный код, который они публикуют, я буду подражать тому, что они делают при создании моего графического интерфейса MapPanel, что-то вроде этого
import java.awt.Dimension;
import javax.swing.*;
import com.roots.map.MapPanel.Gui;
public class TestMapPanel {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Gui mapPanel = new Gui();
mapPanel.setPreferredSize(new Dimension(722, 632));
JMenuBar menuBar = mapPanel.createMenuBar();
JFrame frame = new JFrame("Map Panel Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mapPanel);
frame.setJMenuBar(menuBar);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
Затем пользователь может выбрать, хотят ли они просматривать информационную панель или нет, просто проверив JCheckBoxMenuItem, который соответствует информационной панели.
2) и 3) Все возможно, но вам нужно изучить исходный код, чтобы узнать, как лучше всего выполнять эти и другие вещи.
Изменить, чтобы избавиться от панели поиска при запуске, я прибег к kludge:
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < menuBar.getMenuCount(); i++) {
JMenu menu = menuBar.getMenu(i);
if ("View".equals(menu.getText())) {
int componentCount = menu.getMenuComponentCount();
for (int j = 0; j < componentCount; j++) {
Component c = menu.getMenuComponent(j);
if (c instanceof JCheckBoxMenuItem) {
JCheckBoxMenuItem chkBoxMenuItem = (JCheckBoxMenuItem) c;
String text = chkBoxMenuItem.getText();
if ("Show SearchPanel".equals(text)) {
chkBoxMenuItem.doClick();
}
}
}
}
}
}
});
Это не должно быть таким неуклюжим, и если я правильно читаю и интерпретирую исходный код, то я считаю, что источник мог бы быть лучше.