У меня есть приложение, которое по существу обновляет многие JFrames нажатием кнопки, когда вы нажимаете кнопку increment, тогда все значения всех атрибутов будут увеличиваться. Однако теперь мне нужно передать параметр из класса контроллера в конструктор основного класса, который даст каждому 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
См: [? Использование нескольких JFrames, хороший/плохой практике] (http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-or-bad- практика). Общий консенсус говорит, что это плохая практика. Но если вы настаиваете на его использовании, используйте ['JFrame # setLocation (...)'] (https://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#setLocation (int,% 20int)) или ['JFrame # setLocationByPlatform (...)'] (https://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#setLocationByPlatform (boolean)) также рассмотрите возможность использования карты [https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) ... – Frakcool
Или с помощью [Диалоги] (https://docs.oracle. com/javase/tutorial/uiswing/components/dialog.html) – Frakcool
Путь более сложный, чем должен быть – Toby