- ベストアンサー
「staticでない…」について
今,下記のプログラムを実行させたいのですが,次のエラーが出て困っています。基本的なことだと思いますが,つまずいて修復できません。 どのような対処をすればよいでしょうか。 エラー:「staticでない変数thisをstaticコンテキストから参照することができません。」 プログラム import java.awt.*; import java.awt.geom.*; import javax.swing.*; import java.util.*; public class Test{ public static int R,G,B; public static void main (String[] args){ R = Integer.parseInt(args[0]); G = Integer.parseInt(args[1]); B = Integer.parseInt(args[2]); MyFrame frame = new MyFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } class MyFrame extends JFrame{ public static final int WIDTH = 400; public static final int HEIGHT = 400; public MyFrame(){ setTitle("Test"); setSize(WIDTH,HEIGHT); Container contentPane = getContentPane(); MyPanel panel = new MyPanel(); contentPane.add(panel);}} class MyPanel extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; Rectangle2D rect = new Rectangle2D.Double(100,100,100,50); g2.setColor(new Color(R,G,B)); g2.fill(rect);}}}
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
大元のTestクラスのインスタンスが無いのが原因ですね。 MyFrame frame = new MyFrame(); 下記のように修正してください。 Test test = new Test(); MyFrame frame = test.new MyFrame();
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
MyFrameクラスの宣言の仕方が原因です。 MyFrameクラスを外で宣言するか、MyFrameをstaticクラスにしてください。