前提・実現したいこと
課題作成中に予想外の実行結果が出たので原因が知りたいです
発生している問題
プログラムソース内でGridLayout(3,6)と指定したはずなのに(4,6)になってしまった。コンパイルにはエラーがないのですが、実行ができなかったため、ソースファイル内のJpanel[]を増やしました。すると実行はできたのですが下の画像のようになりました。
完成理想図のようにしたいのですが、現状の問題点と改善案が欲しいです。
該当のソースコード
java
1import java.awt.*; 2import javax.swing.*; 3 4class kadai { 5 public static void main(String[] args){ 6 JFrame frame = new JFrame("kadai"); 7 frame.getContentPane().setPreferredSize(new Dimension(600,150)); 8 frame.pack(); 9 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 10 MyPanel panel = new MyPanel(); 11 frame.add(panel); 12 frame.setVisible(true); 13 } 14} 15 16class MyPanel extends JPanel { 17 JButton[] btn; 18 JPanel[] pnl; 19 MyPanel(){ 20 setBackground(Color.lightGray); 21 setLayout(new GridLayout(6,3)); 22 this.btn = new JButton[3]; 23 for (int i = 0; i < 3; i++){ 24 this.btn[i] = new JButton("ボタン"+(i+1)); 25 } 26 this.pnl = new JPanel[18]; 27 for (int i = 0; i < 18; i++){ 28 this.pnl[i] = new JPanel(); 29 this.pnl[i].setOpaque(false); 30 } 31 int btnPtr = 0, pnlPtr = 0; 32 for (int i = 0; i < 18; i++){ 33 if ( i == 0 ){ 34 add(this.btn[btnPtr]); 35 btnPtr++; 36 } 37 if ( i == 12 ){ 38 add(this.btn[btnPtr]); 39 btnPtr++; 40 } 41 if ( i == 17 ){ 42 add(this.btn[btnPtr]); 43 btnPtr++; 44 } 45 else { 46 add(this.pnl[pnlPtr]); 47 pnlPtr++; 48 } 49 } 50 51 } 52} 53
コンパイル結果
完成理想図
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/01 19:38