質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

2289閲覧

JAVAで実引数リストと仮引数リストの長さが異なりますと表示された

june0327

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2021/07/20 16:30

前提・実現したいこと

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を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2021/07/20 17:02

MyButton クラスも教科書通りになっていますか?
guest

回答1

0

ベストアンサー

MyButton のコンストラクタが実装されていません。

java

1 public MyButton(String text, Image image) { 2 super(text, new ImageIcon(image)); 3 }

メソッド getImage と getFilename も不完全です。

それから、this.pnl_R[i] = new JPanel(); を実行する前に
this.pnl_R = new JPanel[3]; が必要だと思います。

投稿2021/07/20 17:19

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

june0327

2021/07/20 20:26

回答ありがとうございます。そもそもメゾットを書いていないので動くはずがなく、コンストラクタの引数が一致していなかったので動かないよねということですね。理解できました。丁寧にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問