前提・実現したいこと
JavaでJFrame、JPanelを用いたGUIプログラムを作成しています。メニューから選択した図形(三角、四角、五角)をウィンドウ内に表示しようとしているのですが、うまく表示されません。
発生している問題・エラーメッセージ
エラーメッセージは出ていません。
該当のソースコード
Java
1JPanel p1 = new JPanel() { 2 public void paintComponent(Graphics g) { 3 setOpaque(false); 4 g.fillPolygon(new int[]{225, 250 + (int) Math.sqrt(3) * x, 200 - (int) Math.sqrt(3) * x}, new int[]{100 - x, 150 + (int) Math.sqrt(3) * x, 150 + (int) Math.sqrt(3) * x}, 3); 5 } 6 }; 7 JPanel p2 = new JPanel() { 8 public void paintComponent(Graphics g) { 9 setOpaque(false); 10 r1.draw(g); 11 } 12 }; 13 JPanel p3 = new JPanel() { 14 public void paintComponent(Graphics g) { 15 setOpaque(false); 16 g.setColor(Color.RED); 17 g.fillPolygon(new int[]{200 * y, 250 * y, 232 * y, 167 * y, 150 * y}, 18 new int[]{50 * y, 88 * y, 150 * y, 150 * y, 88 * y}, 5); 19 } 20 }; 21 i1.addActionListener(new ActionListener() { 22 public void actionPerformed(ActionEvent evt) { 23 System.exit(0); 24 } 25 }); 26 i2.addActionListener(new ActionListener() { 27 public void actionPerformed(ActionEvent e) { 28 add(p1); 29 remove(p2); 30 remove(p3); 31 repaint(); 32 } 33 }); 34 i3.addActionListener(new ActionListener() { 35 public void actionPerformed(ActionEvent e) { 36 add(p2); 37 remove(p1); 38 remove(p3); 39 repaint(); 40 } 41 }); 42 i4.addActionListener(new ActionListener() { 43 public void actionPerformed(ActionEvent e) { 44 add(p3); 45 remove(p2); 46 remove(p1); 47 repaint(); 48 } 49 });
試したこと
ウィンドウサイズを手動で変更すると図形が表示されるようになります。repaint()の場所が悪いのかadd()で追加した図形が画面に反映されていないようです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/15 07:18