Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在应用程序和#x27;是否打开windows并与控制器通信?_Java_Model View Controller_User Interface - Fatal编程技术网

Java 如何在应用程序和#x27;是否打开windows并与控制器通信?

Java 如何在应用程序和#x27;是否打开windows并与控制器通信?,java,model-view-controller,user-interface,Java,Model View Controller,User Interface,当使用Java编写图形界面时,在应用程序的不同窗口之间切换的适当方式是什么,例如单击按钮?例如,窗口应该是什么,JPanels,JFrames。。。?所有组件如何“看到”域控制器(将图形包链接到应用程序逻辑包的类) 任何指导或参考都将不胜感激。最好的方法是使用动作。可以将操作附加到每个控件。当用户操作发生时(例如,单击按钮),将调用相应的操作。操作可以将调用委托到应用程序逻辑的更深处,并调用图形组件(jfram等) 最好的方法是使用动作。可以将操作附加到每个控件。当用户操作发生时(例如,单击按钮

当使用Java编写图形界面时,在应用程序的不同窗口之间切换的适当方式是什么,例如单击按钮?例如,窗口应该是什么,
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