オンに切り替えたときにこれがロードされない理由を誰かが説明できますか. トグル グリッドのメニュー UI ボタンをクリックするたびに、コンソールは正しいブール値を出力しますが、グリッドは描画されません。
repaint メソッドを試し、グリッドをロードしたメソッドも再度呼び出してみました。
private boolean toggleGrid = false;
public Editor() {
width = DEFAULT_WIDTH;
height = DEFAULT_HEIGHT;
setTitle("Map Editor");
setSize(width, height);
mouse = new Mouse();
addMouseListener(mouse);
addMouseMotionListener(mouse);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
loadMenuUI();
loadTileContainer();
loadEditContainer();
}
private void loadMenuUI(){
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnFile = new JMenu("File");
menuBar.add(mnFile);
JMenuItem mntmNewProject = new JMenuItem("New Project");
mntmNewProject.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_MASK));
mnFile.add(mntmNewProject);
JMenuItem mntmSave = new JMenuItem("Save...");
mntmSave.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
mnFile.add(mntmSave);
JMenuItem mntmLoad = new JMenuItem("Load...");
mntmLoad.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
mnFile.add(mntmLoad);
mnFile.addSeparator();
JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_MASK));
mnFile.add(mntmExit);
JMenu mnOptions = new JMenu("Options");
menuBar.add(mnOptions);
JMenuItem mntmChangeGridSize = new JMenuItem("Change Grid Size");
mnOptions.add(mntmChangeGridSize);
JMenuItem mntmChangeScreenSize = new JMenuItem("Change Screen Size");
mnOptions.add(mntmChangeScreenSize);
JMenuItem mntmToggleGrid = new JMenuItem("Toggle Grid");
mntmToggleGrid.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(toggleGrid) toggleGrid = false;
else {
toggleGrid = true;
repaint();
}
}
});
mnOptions.add(mntmToggleGrid);
}
private void loadTileContainer(){
tileContainer = new JPanel(new GridLayout(20,20));
tileContainer.setBackground(Color.LIGHT_GRAY);
tileContainer.setBounds(0, 0, width - 15, height - 200);
tileContainer.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
if(toggleGrid){
System.out.println("Working");
for(int i = 0; i < 400; i++){
JLabel label = new JLabel();
label.setBorder(BorderFactory.createLineBorder(Color.BLACK));
tileContainer.add(label);
}
}
contentPane.add(tileContainer);
}