Java Swing MDI
Java Swing教程 - Java Swing MDI
MDI代表多文档接口。在MDI应用程序中,打开一个主窗口,并在主窗口中打开多个子窗口。
在MDI应用程序中,我们可以打开多个框架,这些框架将是JInternalFrame类的实例。
我们可以以多种方式组织多个内部框架。 例如,我们可以最大化和最小化它们; 我们可以以平铺的方式并排查看它们,或者我们可以以级联形式查看它们。
以下是我们将在MDI应用程序中使用的四个类:
- JInternalFrame
- JDesktopPane
- DesktopManager
- JFrame
JInternalFrame类的实例充当在其父窗口的区域内显示的子窗口。
JInternalFrame类的实例充当在其父窗口的区域内显示的子窗口。...
要监听窗口事件(如激活,停用等),我们需要向JInternalFrame添加一个InternalFrameListener,而不是一个用于JFrame的WindowListener。
下面的代码显示了如何使用一个实例JInternalFrame类:
String title = "A Child Window"; Boolean resizable = true; Boolean closable = true; Boolean maximizable = true; Boolean iconifiable = true; JInternalFrame iFrame = new JInternalFrame(title, resizable, closable, maximizable, iconifiable);
使用添加组件到iFrame
iFrame.add(...)
打包eth框架,使其可见
iFrame.pack(); iFrame.setVisible(true);
JDesktopPane用作所有JInternalFrame的容器。它使用空布局管理器。
JDesktopPane desktopPane = new JDesktopPane(); // Add all JInternalFrames to the desktopPane desktopPane.add(iFrame);
我们可以使用其getAllFrames()方法获取添加到JDesktopPane的所有JInternalFrames。
JInternalFrame[] frames = desktopPane.getAllFrames();
我们可以使用其getAllFrames()方法获取添加到JDesktopPane的所有JInternalFrames。...
DefaultDesktopManager实现DesktopManager接口。
桌面管理器有很多有用的方法。 例如,要以编程方式关闭内部框架,请使用其closeFrame()方法。
desktopPane.getDesktopManager().closeFrame(frame1);
以下代码演示了如何开发MDI应用程序。
import java.awt.BorderLayout; import java.awt.Dimension; /*from w w w. j av a2 s. co m*/ import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class Main extends JFrame { private final JDesktopPane desktopPane = new JDesktopPane(); public Main() { JInternalFrame frame1 = new JInternalFrame("Frame 1", true, true, true, true); JInternalFrame frame2 = new JInternalFrame("Frame 2", true, true, true, true); frame1.getContentPane().add(new JLabel("Frame 1 contents...")); frame1.pack(); frame1.setVisible(true); frame2.getContentPane().add(new JLabel("Frame 2 contents...")); frame2.pack(); frame2.setVisible(true); int x2 = frame1.getX() + frame1.getWidth() + 10; int y2 = frame1.getY(); frame2.setLocation(x2, y2); desktopPane.add(frame1); desktopPane.add(frame2); this.add(desktopPane, BorderLayout.CENTER); this.setMinimumSize(new Dimension(300, 300)); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } SwingUtilities.invokeLater(() -> { Main frame = new Main(); frame.pack(); frame.setVisible(true); frame.setExtendedState(frame.MAXIMIZED_BOTH); }); } }
更多建议: