Panel de escritorio y formulario interno
Es necesario usar varias ventanas en una aplicación GUI. Puede haber dos estrategias de administración para estas ventanas. Una es que cada ventana es un formulario independiente. La ventaja es que se pueden usar los botones y las teclas de acceso directo en el formulario principal del sistema. Examinar todas las ventanas; la otra es proporcionar un formulario principal y luego poner otras ventanas en el formulario principal, la ventaja es que las ventanas están relativamente ordenadas.
Cuando use la segunda estrategia para administrar ventanas, debe usar la clase JDesktopPane y la clase JInternalFrame (clase de panel de escritorio y clase de marco interno). La clase JDesktopPane es una clase contenedora que se usa para crear un escritorio virtual; la clase JInternalFrame es un objeto liviano que se usa para crear un marco interno que admite arrastrar, cerrar, iconizar, cambiar el tamaño, mostrar el título y la barra de menú.
Métodos comunes en la clase JDesktopPane
método | Descripción |
---|---|
getAllFrames () | Devuelve todos los JInternalFrame que se muestran actualmente en el escritorio en forma de matriz |
getSeletedFrame () | Obtener el escritorio seleccionado actualmente |
eliminar todo() | Eliminar todo JInternalFrame del escritorio |
eliminar (índice int) | Quite el JInternalFrame en la posición de índice especificada del escritorio |
setSelectedFrame (JInternalFrame f) | Establecer el JInternalFrame especificado |
setDragMode (int dragMode) | Establezca el modo de arrastre del formulario, las constantes estáticas opcionales de los parámetros de entrada son LIVE_DRAG_MODE y OUTLINE_DRAG_MODE |
Clase JInternalFrame
Cuando la clase JInternalFrame crea un método de construcción, el número máximo de parámetros de entrada que se pueden establecer es 5.
JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable)
Descripción del parámetro:
título : el título del marco interno.
resizable: establezca si desea permitir el cambio de tamaño libre, establezca en verdadero para permitirlo y falso (predeterminado) para permitirlo.
que se puede cerrar: establezca si desea proporcionar un botón "cerrar", establecer en verdadero para proporcionar y falso (predeterminado) para proporcionar.
maximizable: establezca si desea proporcionar el botón "maximizar", establecer en verdadero para proporcionar y falso (predeterminado) para proporcionar.
iconifiable: establezca si se debe proporcionar un botón "minimizar", establecer en verdadero para proporcionar y falso (predeterminado) para proporcionar.
Métodos comunes en la clase JInternalFrame
método | Descripción |
---|---|
setResizable (booleano b) | Establecer si permitir el cambio de tamaño gratuito |
setClosable (booleano b) | Establecer si se debe proporcionar un botón de cierre |
setMaximizable (booleano b) | Establecer si se debe proporcionar un botón "maximizar" |
setIconifiable (booleano b) | Establecer si se debe proporcionar un botón "minimizar" |
setSelected (booleano seleccionado) | Establecer si el formulario está activado, establecer en verdadero para activar, establecer en falso (valor predeterminado) para desactivar el formulario |
isMaximum () | Compruebe si la forma está maximizada |
isIcon () | Compruebe si el formulario está minimizado |
está cerrado() | Comprueba si el formulario ha sido cerrado |
setFrameIcon (icono de icono) | Establecer el icono que se muestra en la barra de título del formulario |
Cree un panel de escritorio y un formulario interno, el código es el siguiente:
package study.czm;
import java.awt.Container;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
public class Study {
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setTitle("表格组件");
jf.setSize(600, 500);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
Container c = jf.getContentPane();
JDesktopPane desktopPan = new JDesktopPane();// 创建桌面面板对象
desktopPan.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);// 设置内部窗体的拖拽方式
c.add(desktopPan);
// 创建内部窗体
JInternalFrame inFrame1 = new JInternalFrame("第一个内部窗体", true, true, true, true);
JInternalFrame inFrame2 = new JInternalFrame("第二个内部窗体", true, true, true, true);
JInternalFrame inFrame3 = new JInternalFrame("第三个内部窗体", true, true, true, true);
desktopPan.add(inFrame1);
inFrame1.setBounds(50, 50, 200, 200);
inFrame1.setVisible(true);
desktopPan.add(inFrame2);
inFrame2.setBounds(90, 90, 200, 200);
inFrame2.setVisible(true);
desktopPan.add(inFrame3);
inFrame3.setBounds(130, 130, 200, 200);
inFrame3.setVisible(true);
jf.setVisible(true);
}
}
resultado de ejecución: