我如何将参数传递到类中,以便当其参数传递到构造函数中时,Jframe会移动



我有一个应用程序,该应用程序本质上可以通过单击按钮来更新许多jframe,当您单击"增量"时,所有属性的所有值都将被递增。但是,我现在需要将一个参数从控制器类传递到主类中的构造函数,这将为每个Jframe提供不同的位置,因为它们当前被捆在每个位置。我该怎么做?

控制器类

public class Controller extends JFrame
                         implements ActionListener {
    private Model model;
    private View3 view3;
    private View4 view4;
    private JButton clearViews;   // For direct message to views
    private JButton incB;
    private String title;
    // Constructor
    public Controller(Model model, String title) {
        // Record reference to the model
        this.model = model;
        this.title = getTitle();
        // Configure the window
        setTitle("Controller");
        setLocation(40,200);
        setSize(350,150);
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        Container window = getContentPane();
        window.setLayout(new FlowLayout());     // The default is that JFrame uses BorderLayout

        // Set up input GUI
        clearViews = new JButton("Clear views");
        window.add(clearViews);
        clearViews.addActionListener(this);
        incB = new JButton("Increment B");
        window.add(incB);
        incB.addActionListener(this);
        view3 = new View3(this, model);
        window.add(view3);
        view4 = new View4(this, model);
        window.add(view4);
        // Display the frame
        setVisible(true);
    } // constructor
    // Button click handling:
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == clearViews) {
            view3.clear();
            view4.clear();
        }
        else if (e.getSource() == incB) 
            model.modifyB();     // The model will trigger the views to update themselves
    } // actionPerformed
} 

主要方法

public class Main {
    public static void main(String args[]) {
        Model model = new Model(); 
        String title = new String();

        Controller1 c1 = new Controller(model, title); 
        Controller2 c2 = new Controller(model, title); 
        Controller2 c3 = new Controller(model, title ); 
    } // main
} // Main

以一般方式没有什么可做的,只需接受两个参数并将其用于您的位置。

public Controller(Model model, String title, int xPos, int yPos) {
    // Record reference to the model
    this.model = model;
    this.title = getTitle();
    // Configure the window
    setTitle("Controller");
    setLocation(xPos, yPos);
    // Rest of the constructor...

最新更新