#困っていること
ラベル、画像、ボタンのあるプログラムを作っており、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}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/08 01:53