-1
私は画面を持つSwingで簡単なゲームを作成しました。セルをクリックすると、隣接する2つのセルの色が変化します。これは、このコードによって達成される:Iが戻される二つの画面と元画面との間で切り替えることのsetVisible(boolean)メソッドを使用するとSwingでsetVisible(boolean)を使用して画面を切り替える
public class SelfGrid extends BattleGrid {
@Override
protected JPanel getCell()
{
JPanel panel = new JPanel();
panel.setBackground(Color.black);
panel.setBorder(BorderFactory.createLineBorder(Color.blue, 1));
panel.setPreferredSize(new Dimension(20, 20));
panel.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e)
{
panel.setSize(new Dimension(20,80));
panel.setBackground(Color.orange);
}
}
});
return panel;
}
}
public abstract class Battle extends JPanel {
public BattleGrid() {
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel grid = new JPanel();
grid.setLayout(new GridLayout(0,10));
JPanel panel = new JPanel();
panel = getCell();
grid.add(panel);
}
}
this.add(grid);
}
protected abstract JPanel getCell();
}
は、上でクリックされた細胞のみが着色したままです。つまり、各JPanelのディメンションは20,20に復元されます。これはsetVisible()メソッドが実際に画面上のコンポーネントを再ペイントするためであると言われました。内容を変更せずに元の画面を元に戻すにはどうすればよいですか?ありがとうございました。
最近、私がこの(基本的な)質問をしたのは今回が初めてです。以前のポスターには、[最小限で完全で検証可能な例](https://stackoverflow.com/help/mcve)がなくても、正確で信頼できる解決策を提供することは不可能です – MadProgrammer
この "基本的な "質問誰も答えることはできません:) –