2016-05-24 8 views
0

3つのボタンを持つプログラムを作成する割り当てがあります。ボタンにテキストをテキストボックスに表示します。私はプログラムの基本を持っていると思うけど、走らせることはできない。私はチュートリアルを見て、私が得たエラーを読んでみたが、私はそれを把握していないようだ。私はJavaでプログラミングするのが初めてで、コース全体を通してかなり混乱しています。どんな助けでも大歓迎です!今、私のエラーがある3つのボタンを持つJavaプログラムで、それぞれが異なるテキストを表示し、ボタンを押すとテキストボックスにテキストが表示されます


非静的変数これは
objButton1.addActionListener(この)静的コンテキストから参照することはできません。

非静的変数これは静的コンテキストから参照することはできません
objButton2.addActionListener(this);

非静的変数これは静的コンテキストから参照できません
objButton3.addActionListener(this); (e.getSource()== objButton1)

場合

があります(e.getSource()== objButton2)

import java.applet.Applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Option3 extends Frame implements ActionListener 
{ 
    Option3() 
    { 
     setTitle("Option 3"); 
     setSize (300,300); 
     show(); 
    } 
    public static void main (String args[]) 
    { 
     Frame objFrame; 
     Button objButton1; 
     Button objButton2; 
     Button objButton3; 
     TextField objTextField; 

     objFrame = new Option3(); 
     objButton1 = new Button("A"); 
     objButton2 = new Button("B"); 
     objButton3 = new Button("C"); 
     objTextField = new TextField(100); 

     objButton1.addActionListener(this); 
     objButton2.addActionListener(this); 
     objButton3.addActionListener(this); 
    } 

    public void actionPerformed(ActionEvent e) 
    { 
     if (e.getSource() == objButton1) 

      System.out.println("A"); 
     else if (e.getSource() == objButton2) 
      System.out.println("B"); 
     else 
      System.out.println("C");  
    } 
} 

答えて

1

場合シンボルに他
を見つけることができない記号
を見つけることができませんあなたがこの仕事をするために変える必要があることのいくつか。

1)actionPerformed(...)メソッドのボタンにアクセスするには、範囲を拡大する必要があります。現在のように、これらの変数はmain(...)メソッドでのみアクセスできます。

2)あなたが何ができるか、あなたがaddActionListener(...)方法にActionListenerのインスタンスを渡す必要とmain(...)static方法であるため、あなたがthisキーワードを使用することはできませんが、あなただけしましたOption3インスタンスを使用することですまたはより良い解決策は、thisを使用できるOption3コンストラクタ内でこれらのコンポーネントを作成することです。

3)作成したコンポーネントを表示する場合は、フレームに追加する必要があります。

import java.applet.Applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Option3 extends Frame implements ActionListener { 

    Button objButton1; 
    Button objButton2; 
    Button objButton3; 
    TextField objTextField; 

    Option3() { 
     setTitle("Option 3"); 
     setSize (300,300); // is better to control the frame's size by using panels with appropriate layout managers. 

     objButton1 = new Button("A"); 
     objButton2 = new Button("B"); 
     objButton3 = new Button("C"); 
     objTextField = new TextField(100); 

     objButton1.addActionListener(this); 
     objButton2.addActionListener(this); 
     objButton3.addActionListener(this); 

     Panel panel = new Panel(); // set a layout to this panel based on how you want the components to be displayed. 
     panel.add(objButton1); 
     panel.add(objButton2); 
     panel.add(objButton3); 
     panel.add(objTextField); 

     add(panel); 

     show(); 
    } 
    public static void main (String args[]) { 
     Frame objFrame = new Option3(); 

    } 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == objButton1) { //delimit this kind of statements using curly braces to avoid confusion and bugs. 
      System.out.println("A"); 
     } else if (e.getSource() == objButton2) { 
      System.out.println("B"); 
     } else { 
      System.out.println("C");  
     } 
    } 
} 
関連する問題