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. 无法btnCompanycontroller课堂上访问

4

1 回答 1

4

该代码甚至不应该编译,因为没有字段view.btnCompany. btnCompany 变量是构造函数的本地变量,因此在其他任何地方都不可见。此外,正如 MadProgrammer 所指出的,您的控制器类(将其重命名为 Controller 没有实现 ActionListener,因此不能用作 ActionListener。

我的代码还有其他问题:

  • 不要使用空布局和绝对定位。
  • 请遵守 Java 命名规则,包括以大写字母开头的类和接口名称,以便其他人更容易理解您的代码。
  • 是的,将您的控制与您的视图分开。
  • 大多数字段都应该是私有的,因此 view.BtnCompany 不应该是可见的,即使该字段存在。
  • ActionListener 必须实现 ActionListener 接口或扩展实现该接口的类,例如 AbstractAction。
于 2013-08-15T02:47:16.260 回答