• ベストアンサー

private voidなメソッドはstatic コンテキストですか

コンパイルエラーで、 「static コンテキストから参照することはできません」 と表示されます。 ソースにstaticという文字は有りません。 private voidなメソッドはstatic コンテキストですか? [Foo.java] import com.nttdocomo.ui.*; public class Foo extends IApplication {  public void start() {   Display.setCurrent(new MyPanel());  } } class MyPanel extends Panel {  private void e() {   Bar.DShow(Dialog.DIALOG_ERROR, "", "");  } } [Bar.java] import com.nttdocomo.ui.*; public class Bar {  public void DShow(int type, String title, String body) {   Dialog d = new Dialog(type, title);   d.setText(body);   d.show();  } }

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 >Display.setCurrent(new MyPanel()); setCurrentはstaticメソッドです。 ここで引っかかってるのではないでしょうか。

その他の回答 (1)

noname#49664
noname#49664
回答No.2

Bar.DShowとしてますが、クラスから直接呼び出せるのならクラスメソッドでなければいけませんから、staticである必要があります。staticにしたくないなら、new Bar().DShowでインスタンスから呼びださなければいけません。

関連するQ&A

  • iアプリで複数の画面(パネル)を使いたいのですが。

    以下のコードを実行するとボタンとラベルが一緒の画面に表示されますが、ボタンを押した時に新しい画面(パネル)でラベルを表示したいのです。どのようにすれば良いのでしょうか? import com.nttdocomo.ui.*; import com.nttdocomo.io.*; public class test01 extends IApplication { public void start() { mypanel w_panel = new mypanel(); w_panel.setSoftLabel(w_panel.SOFT_KEY_1,"終了"); Display.setCurrent(w_panel); } class mypanel extends Panel implements SoftKeyListener { private Label w_label; private Button w_button; public mypanel(){ w_button = new Button("ボタン"); add(w_button); w_label = new Label("ラベル"); add(w_label); setSoftKeyListener(this); } public void softKeyReleased(int param){ if(param == this.SOFT_KEY_1){ terminate(); } } public void softKeyPressed(int param){ } } }

    • ベストアンサー
    • Java
  • 「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);}}}

    • ベストアンサー
    • Java
  • staticオブジェクト内の変数

    staticなオブジェクト内のローカル変数は、スレッドセーフだと思うのですが、あっていますでしょうか。 例えば、以下の myfoo変数内の、data変数のようなケースです。 public class foobase() { private static foo myfoo = new foo(); . . } public void foo() { String data = "Hello"; }

    • ベストアンサー
    • Java
  • <identifier>がありません

    Javaのプログラムの勉強をやっていて、初心者なのですが、早速分からないことに当たってしまいました。 Webで調べても分かりませんでした。 どなたかご指導お願いします。 初歩的な質問ですみません。 //ソースコードの例 import com.nttdocomo.ui.*; public class while extends IApplication{ public void start(){ Dialog outDlg=new Dialog(Dialog.DIALOG_INFO,\"結果\"); int i,sum; sum=0; i=1; while(i<=10){ sum=sum+1; i=i+1; } outDlg.setText(\"合計=\"+sum); outDlg.show(); terminate(); } }

  • iアプリ 色変更

    初歩的質問ですが・・・ import com.nttdocomo.ui.*; public class TEST01 extends IApplication { public void start(){ MyCanvas mc = new MyCanvas(); Display.setCurrent(mc); } } class MyCanvas extends Canvas{ public void paint(Graphics g){ g.setColor(g.getColorOfName(g.AQUA)); g.fillRect(0,0,200,200); } } で、g.setColor(g.getColorOfName(g.AQUA))の部分で、 「 Graphics からの static メソッド getColorOfName(int) には静的にアクセスしてください。」 と、エラーがでます。 ですが、実行はできます。なぜ??

    • ベストアンサー
    • Java
  • privateスコープについて

    はじめまして。Javaの初心者です。 どうしてもわからないことがあります。 以下のコードを見てみてください。 ************************************************ final class Foo { private int a; Foo(int a) { this.a = a; } public int func(Foo f) { if(this.a <= f.a) { return 1; } else { return -1; } } } final class Demo01 { public static void main(String[] args) { Foo obj1 = new Foo(10); Foo obj2 = new Foo(20); System.out.println(obj1.func(obj2)); } } ************************************************ Fooクラスの2つの異なるインスタンスのフィールドの 値の比較は、funcメソッドの呼び出しによって行われるのですが、funcメソッドの中で、実行中のインスタ ンス(this)のaにアクセス(this.a)することができるこ とは理解できるのですが、実行中のインスタンスとは 異なるFooクラスのインスタンスのaにアクセス(f.a)し たときprivateアクセスのため、参照できないとはなら ないのは、なぜなのでしょうか?どうかご教授をお願 いします。

    • ベストアンサー
    • Java
  • ActionListener について

    JFrame の上に JPanel があり、JPanel の上に JButton があるとします。 JButton が押されたことを JFrame に知らせるにはどうしたらいいでしょうか。 わかるところまで書いてみました。 class MyFrame extends JFrame implements ActionListener { MyPanel myPanel = new MyPanel(); MyFrame() { myPanel.addActionListener(this); add(myPanel); } public void actionPerformed(ActionEvent e) { System.out.println("The button on the MyPanel was pressed!"); } public static void main(String[] args) { new MyFrame(); } } class MyPanel extends JPanel implements ActionListener { JButton button1 = new JButton(); MyPanel() { button1.addActionListener(this); add(button1); } public void actionPerformed(ActionEvent e) { } }

    • ベストアンサー
    • Java
  •  型Containerのメソッドadd(String ,Compone

     型Containerのメソッドadd(String ,Component)は引数(JPanel ,String)に適用できません。  今晩は、java初心者です、エラーの意味が理解出来ません、宜しくお願い致します。  《A》というプログラムと《B》というプログラムで、クラスを「class MyPanel extends JPanel」と「class JPanel」に変えただけで、「型Containerのメソッドadd(String ,Component)は引数(JPanel ,String)に適用できません。」というエラーがでます。  一体何が原因でしょうか。  JPanelを継承したクラス(MyPanel)を呼び出すのか、そのまま、JPanelクラスを呼び出すのかの違いだけで、内容的には何も変わるところがないはずだと思うのですが。  意味が理解出来ません。 ======================================================================== 《A》 public class Sample extends JFrame { Sample() { this.setSize(300,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyPanel panel = new MyPanel(); this.add(panel , BorderLayout.CENTER); this.setVisible(true); } public static void main(String[] args) { new Sample(); } } class MyPanel extends JPanel { public void paintComponent(Graphics g) { g.setColor(Color.red); g.fillOval(50,50,100,100); } } ============================================================ 《B》 public class Sample extends JFrame { Sample() { this.setSize(300,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); this.add(panel , BorderLayout.CENTER); this.setVisible(true); } public static void main(String[] args) { new Sample(); } } class JPanel { public void paintComponent(Graphics g) { g.setColor(Color.red); g.fillOval(50,50,100,100); } } =======================================================================

    • ベストアンサー
    • Java
  • メンバ関数の operator new と static operator new の違い

    class Foo { public : static void* operator new(size_t size) { ... // 実装 } }; という実装を最近見かけたのですが、私自身今まで class Foo { public : void* operator new(size_t size) { ... // 実装 } }; という風に書いてきました。static が付いているのと付いていない ものは、何が違うのでしょうか??

  • 回答間違い??

    class Foo{   Foo(){     System.out.println("Foo");   }   Foo(String str){     System.out.println("Foo " + str);   } } class Bar extends Foo{   Bar(String str){     Foo();  ←【ココ】     System.out.println("Bar " + str);   }   public static void main(String args[]){     Bar obj2 = new Bar("Hello");   } } あるテキストの問題で【ココ】の部分に入れる適切な処理として、super()かFoo()が正解でした・・・ しかしこのようにFoo()としてしまうとコンパイルエラーが出ます。 回答間違えだとは思うのですが、 super()以外の回答としてどのようなものがありますでしょうか? ためしにFoo.Foo()とやってみましたがだめでした・・・。 ちなみに Foo Bar Hello と出るようにします。

    • ベストアンサー
    • Java

専門家に質問してみよう