如何连接多个类?

时间:2013-08-15 02:45:04

标签: java swing

我是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

  3. 中的controller

1 个答案:

答案 0 :(得分:4)

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

我的代码还有其他问题:

  • 不要使用空布局和绝对定位。
  • 遵守Java命名规则,包括使用大写字母起始类和接口名称,以便其他人可以更轻松地理解您的代码。
  • 是的,将您的控件从您的视图中分离出来。
  • 大多数所有字段都应该是私有的,因此即使该字段存在,view.BtnCompany也不应该可见。
  • ActionListeners必须实现ActionListener接口或扩展实现接口的类,例如AbstractAction。