前提・実現したいこと
JAVAの講義の課題に取り組んでいるのですが、コンパイルで以下のようなエラーが出ましたが、教科書通り自分の中ではやっていたため、エラーになる理由が分かりません。
エラーの理由を詳しく知りたいです。
発生している問題・エラーメッセージ
Enshu.java:41: エラー: クラス MyButtonのコンストラクタ MyButtonは指定された型に適用できません。 this.btnView[i] = new MyButton("画像"+(i+1), imglst[i]); ^ 期待値: 引数がありません 検出値: String,Image 理由: 実引数リストと仮引数リストの長さが異なります エラー1個
該当のソースコード
JAVA
1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.*; 4 5class Report3_1 { 6 public static void main(String[] args){ 7 JFrame frame = new JFrame("Enshu"); 8 frame.getContentPane().setPreferredSize(new Dimension(500,200)); 9 frame.pack(); 10 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 11 MyPanel panel = new MyPanel(); 12 frame.add(panel); 13 frame.setVisible(true); 14 } 15} 16 17class MyPanel extends JPanel implements ActionListener { 18/* フィールド変数 */ 19 MyButton[] btnView; 20 JButton btnErase; 21 Image[] imglst; 22 Image showImg; 23 JPanel pnlLeft, pnlRight; 24 JPanel[] pnl_R; 25 boolean show; 26 27/* コンストラクタ */ 28 MyPanel(){ 29 /* 画面の背景色・レイアウト */ 30 setBackground(Color.lightGray); 31 setLayout(new GridLayout(1,2)); 32 /*画像①~画像⑥の読込*/ 33 Image[] imglst = new Image[6]; 34 for (int i = 0; i < 6; i++){ 35 imglst[i] = getToolkit().getImage("pic2021-"+(i+1)+".gif"); 36 } 37 /*画像①~画像⑥のボタンまでを1つのインスタンス配列で作成する*/ 38 this.btnView = new MyButton[6]; 39 for (int i = 0; i < 6; i++){ 40 this.btnView[i] = new MyButton("画像"+(i+1), imglst[i]); 41 this.btnView[i].addActionListener(this); 42 } 43 /* "画像消去"ボタンを作成する */ 44 this.btnErase = new JButton("画像消去"); 45 this.btnErase.addActionListener(this); 46 /*左側に透明パネルを作成*/ 47 this.pnlLeft = new JPanel(); 48 this.pnlLeft.setOpaque(false); 49 /*右側に透明パネルを作成*/ 50 this.pnlRight = new JPanel(); 51 this.pnlRight.setOpaque(false); 52 /*右側の透明パネルに使う透明パネル3枚を作成,画像①~画像⑥のボタンを追加*/ 53 for (int i = 0; i < 3; i++){ 54 this.pnl_R[i] = new JPanel(); 55 this.pnl_R[i].setOpaque(false); 56 this.pnl_R[i].setLayout(new FlowLayout()); 57 } 58 for (int i = 0; i < 3; i++){ 59 if(i == 0){ 60 this.pnl_R[i].add(this.btnView[0]); 61 } 62 if(i == 1){ 63 for(int j=1; j<3; j++){ 64 this.pnl_R[i].add(this.btnView[j]); 65 } 66 } 67 if(i == 2){ 68 for(int j=3; j<6; j++){ 69 this.pnl_R[i].add(this.btnView[j]); 70 } 71 } 72 } 73 /*右側のパネルの南に"画像消去"ボタンを追加*/ 74 this.pnlRight.setLayout(new BorderLayout()); 75 this.pnlRight.add(this.btnErase, BorderLayout.SOUTH); 76 this.pnlRight.setLayout(new GridLayout(3,1)); 77 for(int i = 0; i < 3; i++){ 78 this.pnlRight.add(this.pnl_R[i]); 79 } 80 /* 画像ファイル名の配列を作っておくと色々便利 81 * (使わなくてもよいです) 82 */ 83 String[] filelst = new String[6]; 84 for (int i = 0; i < 6; i++){ 85 filelst[i] = "pic2021-"+(i+1)+".gif"; 86 } 87 /* 画像表示デフォルトはfalse */ 88 this.show = false; 89 } 90 91 @Override 92 public void actionPerformed(ActionEvent e){ 93 /*画像①~画像⑥のボタンのクリック検査*/ 94 } 95 96 @Override 97 public void paintComponent(Graphics g){ 98 /* 画像の表示位置は(50,35)。文字の表示位置は(70,185) */ 99 } 100} 101 102class MyButton extends JButton { 103/* フィールド変数 */ 104 105/* コンストラクタ */ 106 107/* メソッド */ 108 Image getImage(){ 109 } 110 111 String getFilename(){ 112 } 113 114}/* */
補足情報(FW/ツールのバージョンなど)
Cmder.exeを使用しています。
MyButton クラスも教科書通りになっていますか?
回答1件
あなたの回答
tips
プレビュー