Erm、私は何が起こっているのか分かりません...私の人生のために、私はIDEから連続して複数回アプリケーションを実行した後も試したりデバッグしたりしませんでした。私はここにまっすぐ来て、私が奇妙であると考えるものを説明することにしました。すべてのコンパイル時にJFrameウィンドウのサイズが変更されます。毎回異なる結果が出る
私はタンとベージュの四角でチェス盤を作成しようとしていますが、1024x1024に設定されたJFrameウィンドウは正方形になっています。私も8x8のgridLayoutを使用しています。
アプリケーションを実行するたびに、6x8、次の5x8、または次の7x7のグリッドが表示されることがあります。
何が起こっているのかわかりません...どんな助けも甘いでしょう!
public class ChessBoard extends JFrame{
private final JFrame board = new JFrame();
private final JButton button = new JButton();
private final GridLayout grid = new GridLayout(8, 8);
public ChessBoard(){
board.setSize(1024, 1024);
board.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
board.setVisible(true);
board.setLayout(grid);
AddGridColors();
}
private void AddGridColors(){
Color tanColor = new Color(210, 180, 140);
Color beigeColor = new Color(245, 245, 220);
JPanel[] panelArray = new JPanel[63];
int panelArrayIndex;
for(panelArrayIndex = 0; panelArrayIndex < 63; ++panelArrayIndex){
panelArray[panelArrayIndex] = new JPanel();
if(panelArrayIndex == 0){
panelArray[panelArrayIndex].setBackground(tanColor);//tan
panelArray[panelArrayIndex].add(new JLabel("square"+panelArrayIndex));
board.add(panelArray[panelArrayIndex]);
}
if(panelArrayIndex > 0){
if(panelArrayIndex % 8 == 0){
panelArray[panelArrayIndex].setBackground(beigeColor);
panelArray[panelArrayIndex].add(new JLabel("square"+panelArrayIndex));
board.add(panelArray[panelArrayIndex]);
}
if(panelArray[panelArrayIndex-1].getBackground().equals(tanColor)){
panelArray[panelArrayIndex].setBackground(beigeColor);
panelArray[panelArrayIndex].add(new JLabel("square"+panelArrayIndex));
board.add(panelArray[panelArrayIndex]);
}else{
panelArray[panelArrayIndex].setBackground(tanColor);
panelArray[panelArrayIndex].add(new JLabel("square"+panelArrayIndex));
board.add(panelArray[panelArrayIndex]);
}
}
}
}
これは正常ですか、わかりやすいものがありますか?
はあなたがにすべての要素を追加した前に、あなたが
setVisible(true);
を呼び出しているので、これは可能性があり、右setSize(1024, 1024);
前AddGridColors();
への呼び出しを移動してみでした:私の上記のコメントから
「* **私もしようとしなかった私の人生とデバッグ**のためのアプリケーションを実行した後rray(63個の要素ではなく、64があります) IDEから複数回連続して実行されます。私はここにまっすぐに来て、私が奇妙であると思うものを説明することにしました* " - クールではない..デバッグに行きましょうデバッグのヘルプを実際にはここではオフトピックとみなしています。 –
'setSize(1024、1024);の直前に' AddGridColors(); 'を呼び出そうとしてもいいですか?それが助けになるなら、何が起こっているのか説明できます。 -loopは0から63ではなく0から64? – Frakcool
また、 'public class ChessBoardはJFrame {'と 'private final JFrame board = new JFrame();'を拡張しています。理由はありません。 – Ansharja