Java 如何在应用程序和#x27;是否打开windows并与控制器通信?
当使用Java编写图形界面时,在应用程序的不同窗口之间切换的适当方式是什么,例如单击按钮?例如,窗口应该是什么,Java 如何在应用程序和#x27;是否打开windows并与控制器通信?,java,model-view-controller,user-interface,Java,Model View Controller,User Interface,当使用Java编写图形界面时,在应用程序的不同窗口之间切换的适当方式是什么,例如单击按钮?例如,窗口应该是什么,JPanels,JFrames。。。?所有组件如何“看到”域控制器(将图形包链接到应用程序逻辑包的类) 任何指导或参考都将不胜感激。最好的方法是使用动作。可以将操作附加到每个控件。当用户操作发生时(例如,单击按钮),将调用相应的操作。操作可以将调用委托到应用程序逻辑的更深处,并调用图形组件(jfram等) 最好的方法是使用动作。可以将操作附加到每个控件。当用户操作发生时(例如,单击按钮
JPanels
,JFrames
。。。?所有组件如何“看到”域控制器(将图形包链接到应用程序逻辑包的类)
任何指导或参考都将不胜感激。最好的方法是使用动作。可以将操作附加到每个控件。当用户操作发生时(例如,单击按钮),将调用相应的操作。操作可以将调用委托到应用程序逻辑的更深处,并调用图形组件(jfram等) 最好的方法是使用动作。可以将操作附加到每个控件。当用户操作发生时(例如,单击按钮),将调用相应的操作。操作可以将调用委托到应用程序逻辑的更深处,并调用图形组件(jfram等) 建议:使用选项卡式面板应该做到这一点,JPanel只是一个Java容器,而JFrame应该是外部窗口,它们是不同的东西。在一个JFrame上应该有几个JPanel。您的应用程序可以有多个JFrame。建议:使用选项卡式面板可以做到这一点,JPanel只是一个Java容器,而JFrame应该是外部窗口,它们是不同的东西。在一个JFrame上应该有几个JPanel。你的应用程序可以有多个JFrame 当使用Java编写图形界面时,在应用程序的不同窗口之间切换的适当方式是什么,例如单击按钮 向按钮添加一个
ActionListener
。在actionPerformed(ActionEvent)
方法中,执行需要执行的操作
例如,窗口应该是什么,JPanels,JFrames
我建议将主窗口设置为JFrame
,并对大多数其他元素使用JDialog
或JOptionPane
。或者,可以通过多种方式将多个GUI元素添加到单个空间中—CardLayout
,JTabbedPane
,JSplitPane
,JDesktopPane/JInternalFrame
所有组件如何“看到”域控制器(将图形包链接到应用程序逻辑包的类)
一种方法是在UI之间传递对对象的引用
当使用Java编写图形界面时,在应用程序的不同窗口之间切换的适当方式是什么,例如单击按钮
向按钮添加一个ActionListener
。在actionPerformed(ActionEvent)
方法中,执行需要执行的操作
例如,窗口应该是什么,JPanels,JFrames
我建议将主窗口设置为JFrame
,并对大多数其他元素使用JDialog
或JOptionPane
。或者,可以通过多种方式将多个GUI元素添加到单个空间中—CardLayout
,JTabbedPane
,JSplitPane
,JDesktopPane/JInternalFrame
所有组件如何“看到”域控制器(将图形包链接到应用程序逻辑包的类)
一种方法是在UI之间传递对对象的引用。使用
控制器启动应用程序。在控制器的构造函数中,您将初始化要打开的第一个GUI,比如说GUI\u A
:
private GUI_A gui_a = null;
Controller() {
gui_a = new GUI_A(this);
}
gui_a.setVisible(true);
您可能注意到,我使用一个参数调用了GUI\u A
的构造函数:this
此
引用当前类的实例,因此此
是控制器
的类型。GUI\u A
的构造函数必须如下所示:
private Controller controller = null;
GUI_A(Controller ctrl) {
controller = ctrl;
}
这是一种让控制器了解GUI的简单方法
接下来要做的事情是显示GUI\u A
:
private GUI_A gui_a = null;
Controller() {
gui_a = new GUI_A(this);
}
gui_a.setVisible(true);
如果您现在要处理按钮单击,请执行以下操作:
private Controller controller = null;
GUI_A(Controller ctrl) {
controller = ctrl;
}
首先,将ActionPerformed方法添加到按钮中。而且,因为这是MVC中的最佳实践,所以您不希望在视图/GUI中执行逻辑。因此,您还可以在控制器中为执行的操作创建相应的方法,并从GUI中调用该方法:
// Controller
GUI_A_button1_actionPerformed(ActionEvent evt) {
// Add your button logic here
}
// GUI_A
button1_actionPerformed(ActionEvent evt) {
controller.GUI_A_button1_actionPerformed(evt);
}
通常,您不需要将ActionEvent变量传递给控制器,因为您不会经常需要它。通常,您会从文本字段中读取文本并将其传递给控制器:
// Controller
GUI_A_button1_actionPerformed(String text) {
// Add logic for the text here
}
// GUI_A
button1_actionPerformed(ActionEvent evt) {
controller.GUI_A_button1_actionPerformed(textField1.getText());
}
如果您现在想从控制器
访问GUI上的某些字段,请确保不要在GUI中将这些字段标记为公共字段,而是创建公共方法来处理如何显示值。您可以使用控制器启动应用程序。在控制器的构造函数中,您将初始化要打开的第一个GUI,比如说GUI\u A
:
private GUI_A gui_a = null;
Controller() {
gui_a = new GUI_A(this);
}
gui_a.setVisible(true);
您可能注意到,我使用一个参数调用了GUI\u A
的构造函数:this
此
引用当前类的实例,因此此
是控制器
的类型。GUI\u A
的构造函数必须如下所示:
private Controller controller = null;
GUI_A(Controller ctrl) {
controller = ctrl;
}
这是一种让控制器了解GUI的简单方法
接下来要做的事情是显示GUI\u A
:
private GUI_A gui_a = null;
Controller() {
gui_a = new GUI_A(this);
}
gui_a.setVisible(true);
如果您现在要处理按钮单击,请执行以下操作:
private Controller controller = null;
GUI_A(Controller ctrl) {
controller = ctrl;
}
首先,将ActionPerformed方法添加到按钮中。而且,因为这是MVC中的最佳实践,所以您不希望在视图/GUI中执行逻辑。因此,您还可以在控制器中为执行的操作创建相应的方法,并从G