実現したいこと
jSliderの値が大きくなると、中央座標を保ったままellipseも大きくなり、
jSliderの値が小さくなると、ellipseも小さくなるようにしたいです。
実装したインターフェース
public void stateChanged(ChangeEvent e) { } の中で、オーバーライドされているメソッドの中のellipseを使おうと
コードの上の方で Ellipse2D ellipse;を定義しましたが、エラーになります。
また、public void stateChanged(ChangeEvent e) { } の中でJsliderのgetValue()を入れた変数を使って、width,heightを変えようとしてもエラーになります。
別のクラスの中でオーバーライドされているメソッドを呼び出して、中身を一部変えたい場合はどうすれば良いのでしょうか?
発生している問題・エラーメッセージ
メソッド Double(int, int, int, int) は型 Ellipse2D で未定義です 非 static フィールド ellipse を static 参照できません 非 static フィールド ellipse を static 参照できません
該当のソースコード
java
1import java.awt.Color; 2import java.awt.Graphics; 3import java.awt.Graphics2D; 4import java.awt.geom.Ellipse2D; 5 6import javax.swing.JFrame; 7import javax.swing.JLabel; 8import javax.swing.JPanel; 9import javax.swing.JSlider; 10import javax.swing.event.ChangeEvent; 11import javax.swing.event.ChangeListener; 12 13public class TestFrame extends JFrame implements ChangeListener { 14 JSlider slider; 15 JLabel label; 16 JPanel p; 17 Ellipse2D ellipse; 18 19 20 public static void main(String[] args) { 21 new TestFrame().setVisible(true); 22 } 23 24 TestFrame() { 25 super("Swingサンプル(円の描画)"); 26 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 27 setSize(800, 800); 28 29 setContentPane(new CirclePanel()); 30 31 label = new JLabel("test"); 32 label.setBounds(300, 10, 100,100); 33 add(label); 34 35 JLabel label2 = new JLabel("テスト"); 36 label2.setBounds(300, 500, 100, 100); 37 add(label2); 38 39 slider = new JSlider(); 40 slider.addChangeListener(this); 41 p = new JPanel(); 42 p.add(slider); 43 p.setBounds(300, 300, 100, 50); 44 add(p); 45 46 47 } 48 49 50 51 52 public void stateChanged(ChangeEvent e) { 53 label.setText("値:" + slider.getValue()); 54 int value= slider.getValue(); 55 //p.setBounds(300, 300, value, value); 56// エラーになる 57 ellipse.Double(300,200,value, value); 58 59 60 } 61 62 63 private static class CirclePanel extends JPanel { 64 CirclePanel() { 65 super(null); //レイアウトマネージャ無し 66 setBackground(Color.WHITE); //背景色 67 } 68 @Override 69 public void paintComponent(Graphics g){ 70 super.paintComponent(g); 71 72 Graphics2D g2 = (Graphics2D)g; 73 g2.setColor(Color.BLUE); 74// エラーになる 75 ellipse = new Ellipse2D.Double(300,200,100,100); 76// エラーになる 77 g2.fill(ellipse); 78 } 79 } 80}
###試したこと
どうすれば求める情報が出てくるのか検索方法がわかりませんでしたが、調べた中では。JSliderの値に合わせて図形が大小変化するものは見つけられませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/02/14 01:30
2024/02/14 03:42 編集
2024/02/14 05:37