前提・実現したいこと
ウィンドウに四角を複数描画したいが、座標を変えて同じものを描画するだけなので無駄にコードを増やしたくなく、省略する方法を探しています。
該当のソースコード
Java
1class Window extends JFrame{ 2 static JFrame mainFrame = new JFrame("The Mountain");; 3 //contentpaneを取得しそこにパネルを配置 4 static Container contentPane = mainFrame.getContentPane(); 5 public static void Win() { 6 Square sq = new Square(); 7 Container cp = mainFrame.getContentPane(); 8 cp.add( sq ); 9 mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 10 mainFrame.setSize(330, 650); 11 mainFrame.setLocationRelativeTo(null); 12 //フレームを表示 13 mainFrame.setVisible(true); 14 } 15 } 16class Square extends JPanel{ 17 public void paint(Graphics g) { 18 super.paintComponent(g); 19 g.fillRect(260,400,30,30);//塗りつぶし 20 } 21 }
これによって四角が一つは描画できている状態です。
自分で調べたことや試したこと
Squareクラスの引数をg1,g2...のように増やしていってsuper.paintComponent(g○);とg○.fillRect();を増やしてみたのですが二つ以上は描画されませんでした。また、この方法でできたとしてもプログラムが長くなってしまうので望んでいる形ではありません。Squareクラスのインスタンスを複数生成してリストにいれて簡潔に管理するという方法はできるのかなど考えましたが描画する座標を変えたいのでそれはできないか..という感じで手詰まりです。
使っているツールのバージョンなど補足情報
JavaSE-17,EclipseIDE
プログラミング言語を学ぶのはJavaが初めてで学び始めて1週間程度ですが、独習Javaという本を読んだだけなのでまずは作りたいものを作りながら学んでいこうと思い一昨日辺りから書き始めました。一つ一つのコードを理解しながら書いていきたいと思っていますがstatic Container contentPane = mainFrame.getContentPane();とContainer cp = mainFrame.getContentPane();二つは何を表しているのかがなんとなくでしかわかっていませんのでおかしいと思われる箇所は他にもご指摘いただきたいです。
回答2件
あなたの回答
tips
プレビュー