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

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

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

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

Q&A

解決済

1回答

1038閲覧

配列の文字を参照してボタンを作成したい (フィールド Compornentは不可視です というエラーが解決できない)

series207

総合スコア49

Java

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

1グッド

0クリップ

投稿2019/12/08 01:22

#困っていること
ラベル、画像、ボタンのあるプログラムを作っており、for文中で配列nameの文字を参照してボタンを作成したいのですが、47行目の「フィールド Compornentは不可視です」というエラーが解決できません。どうすればいいですか?
#該当のソースコード

java

1import java.awt.BorderLayout; 2import java.awt.Color; 3import java.awt.Container; 4import java.awt.Graphics; 5import java.awt.Image; 6import java.awt.Toolkit; 7import java.awt.event.ActionEvent; 8import java.awt.event.ActionListener; 9 10import javax.swing.JButton; 11import javax.swing.JFrame; 12import javax.swing.JLabel; 13import javax.swing.JPanel; 14public class Botan{ 15 private String[] name={"1枚","2枚","3枚"}; 16 public static void main(String[] args) { 17 BotanFrame f = new BotanFrame("Botan"); 18 f.setBackground(Color.white); 19 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 20 f.setVisible(true); 21 } 22} 23class BotanFrame extends JFrame implements ActionListener,Runnable{ 24 Image offImage; 25 Graphics offGraphics; 26 public void addNotify(){ 27 super.addNotify(); 28 offImage=createImage(150,50); 29 offGraphics = offImage.getGraphics(); 30 } 31 int n[]={0,2,4}, y[]={0,0,0},scount,s=0; 32 Image img, back; 33 static int snum = 7, ysize = 50; 34 String base = "Botan"; 35 JPanel pnl; 36 JLabel lbel; 37 38 public BotanFrame(String title){ 39 super(title); 40 Container cnt = getContentPane(); 41 Toolkit tk = Toolkit.getDefaultToolkit(); 42 img = tk.getImage("mario2.jpg"); 43 cnt.setLayout(new BorderLayout()); 44 pnl = new JPanel(); 45 46 for(int i=0; i<=2; i++){ 47 JButton b1 = new JButton(name[i]); //フィールド Compornentは不可視です 48 pnl.add(b1); 49 } 50 51 52 setBackground(Color.white); 53 setSize(300, 200); 54 cnt.add("South",pnl); 55 lbel = new JLabel("数を揃えてください"); 56 cnt.add("North",lbel); 57 for(int i=0; i<n.length; i++){ 58 y[i]=n[i]*ysize; 59 } 60 } 61 62 public void paint(Graphics g){ 63 int basex = (getSize().width - img.getWidth(this)) / 2; 64 int basey = (getSize().height - ysize) / 2; 65 66 for(int i=0; i<n.length; i++){ 67 if (y[i] < ysize*(snum-1) ) { 68 offGraphics.drawImage(img ,i*img.getWidth(this),5-y[i],this); 69 } else { 70 offGraphics.drawImage(img,i*img.getWidth(this),5-y[i],this); 71 offGraphics.drawImage(img,i*img.getWidth(this),5+ysize*snum-y[i],this); 72 } 73 } 74 75 g.drawImage(offImage, basex, basey, this); 76 pnl.repaint(); 77 lbel.repaint(); 78 } 79 80 81 82 public void actionPerformed(ActionEvent e) { 83 84 } 85 86 public void run() { 87 88 } 89}

#完成イメージ図
イメージ説明

TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

private String[] name={"1枚","2枚","3枚"};を、class Botanからclass BotanFrameに移します。


mainメソッドもBotanFrameに移して、Botanをなくしてもいいかもしれません。

投稿2019/12/08 01:49

編集2024/03/04 10:31
TN8001

総合スコア9326

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

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

series207

2019/12/08 01:53

ご回答ありがとうございます。解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問