如何将参数传递给类,以便在构造函数中传递其参数时JFrame会移动?

时间:2017-02-15 22:44:45

标签: java swing

我有一个应用程序,只需单击一个按钮即可更新许多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

1 个答案:

答案 0 :(得分:1)

一般情况下做的不多,只需接受另外两个参数并将其用于您的位置。

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...