1

私はJavaの初心者です

package assigment;

import java.awt.*;
import java.sql.*;
import javax.swing.*;

public class view extends JFrame {

    public static void main(String[] args) {
        new view();
    }

    public view(){
        JFrame f = new JFrame("WELCOME");
        f.setSize(400, 300);
        f.setVisible(true);
        f.setLocationRelativeTo(null);

        controller cl = new controller();

        JButton btnCompany = new JButton ("COMPANY");
        f.add(btnCompany);
        f.setLayout(null);
        btnCompany.setBounds(50, 50, 100, 50);
        btnCompany.addActionListener (cl);
    }
}

コントローラークラス

package assigment;

import java.awt.event.*;
public class controller {

    public static void actioncompany(ActionEvent a,view view) {
        if (a.getSource() == view.btnCompany) {
            System.out.print ("test");
        }
    }
}

問題:

  1. controllerクラスを使用できません

  2. 授業btnCompany中はアクセスできませんcontroller

4

1 に答える 1

4

フィールドがないため、そのコードはコンパイルすることさえできませんview.btnCompany。btnCompany 変数はコンストラクタに対してローカルであるため、他の場所では見えません。また、MadProgrammer が指摘しているように、コントローラー クラス (名前を変更してC ontroller) は ActionListener を実装していないため、ActionListener として使用することはできません。

私はあなたのコードに他の問題があります:

  • null レイアウトと絶対配置を使用しないでください。
  • 他の人があなたのコードをより簡単に理解できるように、クラス名とインターフェース名を大文字で始めるなど、Java の命名規則に従ってください。
  • はい、ビューからコントロールを分離します。
  • ほとんどすべてのフィールドは非公開にする必要があるため、フィールドが存在していても、view.BtnCompany は表示されません。
  • ActionListeners は、ActionListener インターフェースを実装するか、AbstractAction などのインターフェースを実装するクラスを拡張する必要があります。
于 2013-08-15T02:47:16.260 に答える