📄 jmdiframe.java
字号:
/*
* JMDIFrame.java
*
*
** iReport -- Visual designer for generating JasperReports Documents
* Copyright (C) 2002-2003 Giulio Toffoli gt@businesslogic.it
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* Giulio Toffoli
* Via T.Aspetti, 233
* 35100 Padova ITALY
* gt@businesslogic.it
*
*
* Created on 6 febbraio 2003, 0.31
*/
package it.businesslogic.ireport.gui;
import javax.swing.*;
/**
* JMDIFrame is an evolution of the very trivial javax.swing.JInternalFrame.
* This class implements an MDI window handling similar to Win32, with
* the maximized frame really maximized (without the title bar, and with the
* minimize, maximize and close buttons on menu bar, that must be a JMDIMenuBar)
*
* @author Administrator
*/
public class JMDIFrame extends javax.swing.JInternalFrame {
javax.swing.border.Border borderNormal = null;
javax.swing.JComponent northPane = null;
java.awt.Rectangle northPaneBounds = null;
it.businesslogic.ireport.gui.JMDIMenuBar menu = null;
private boolean borderNone = false;
/** Creates new form JMDIFrame */
/** OLD
public JMDIFrame() {
initComponents();
northPane = ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).getNorthPane();
northPaneBounds = northPane.getBounds();
setNormalSize( this.getPreferredSize());
borderNone = false;
jPanel1.setBackground(new java.awt.Color((int)( Math.random()* 0xffffff)));
}
**/
/**
Fixed version for OSX
*/
public JMDIFrame() {
initComponents();
northPane = ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).getNorthPane();
if(northPane == null){//change made here
javax.swing.plaf.basic.BasicInternalFrameUI aUI = new javax.swing.plaf.basic.BasicInternalFrameUI(this);
this.setUI(aUI);
northPane = ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).getNorthPane();
} //change ends here
northPaneBounds = northPane.getBounds();
setNormalSize( this.getPreferredSize());
borderNone = false;
jPanel1.setBackground(new java.awt.Color((int)( Math.random()* 0xffffff)));
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
jPanel1 = new javax.swing.JPanel();
setClosable(true);
setIconifiable(true);
setMaximizable(true);
setResizable(true);
setTitle("JMDIFrame");
setPreferredSize(new java.awt.Dimension(400, 400));
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
formComponentResized(evt);
}
});
addHierarchyBoundsListener(new java.awt.event.HierarchyBoundsListener() {
public void ancestorMoved(java.awt.event.HierarchyEvent evt) {
}
public void ancestorResized(java.awt.event.HierarchyEvent evt) {
formAncestorResized(evt);
}
});
addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
formInternalFrameClosing(evt);
}
public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
formInternalFrameClosed(evt);
}
public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
formInternalFrameActivated(evt);
}
public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
}
});
addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
formPropertyChange(evt);
}
});
jPanel1.setBackground(new java.awt.Color(255, 204, 204));
jPanel1.addHierarchyBoundsListener(new java.awt.event.HierarchyBoundsListener() {
public void ancestorMoved(java.awt.event.HierarchyEvent evt) {
}
public void ancestorResized(java.awt.event.HierarchyEvent evt) {
jPanel1AncestorResized(evt);
}
});
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
pack();
}//GEN-END:initComponents
private void formInternalFrameClosing(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameClosing
// If there is no more frames, reset menu buttons...
// javax.swing.JOptionPane.showMessageDialog(this,"Frames: "+this.getDesktopPane().getAllFrames().length);
// if (this.getDesktopPane().getAllFrames().length == 1)
// {
// try {
// this.setIcon(true);
// } catch (Exception ex) {}
//if (menu != null) menu.removeFrameButtons();
// }
if ( this.getDesktopPane() instanceof JMDIDesktopPane)
{
((JMDIDesktopPane)this.getDesktopPane()).internalFrameClosed(this);
}
}//GEN-LAST:event_formInternalFrameClosing
private void formInternalFrameClosed(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameClosed
}//GEN-LAST:event_formInternalFrameClosed
private void jPanel1AncestorResized(java.awt.event.HierarchyEvent evt) {//GEN-FIRST:event_jPanel1AncestorResized
}//GEN-LAST:event_jPanel1AncestorResized
private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameActivated
// We must notify the JMDIDesktopPane...
if ( this.getDesktopPane() instanceof JMDIDesktopPane)
{
((JMDIDesktopPane)this.getDesktopPane()).internalFrameActivated(this);
}
}//GEN-LAST:event_formInternalFrameActivated
private void formComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentResized
}//GEN-LAST:event_formComponentResized
private void formPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_formPropertyChange
// Add your handling code here
if (evt.getPropertyName().equals("maximum"))
onMaximizeMinimize();
else if (evt.getPropertyName().equals("selected"))
onSelect();
}//GEN-LAST:event_formPropertyChange
private void onMaximizeMinimize()
{
if (borderNormal == null)
{
borderNormal = this.getBorder();
}
//javax.swing.JOptionPane.showMessageDialog(this,"xx2");
if ( this.isMaximum)
{
if (!borderNone)
{
/* BUG #955403 fixed - Recursive calls on maximize a internal frame
JDesktopPane desktopPane = this.getDesktopPane();
if(desktopPane != null){
javax.swing.JInternalFrame[] jfs = desktopPane.getAllFrames();
for (int i=0; i<jfs.length; ++i)
{
if (jfs[i] != this)
{
try {
jfs[i].setMaximum(true);
} catch (Exception ex){}
}
}
}*/
try {
this.setSelected(true);
} catch (Exception ex){}
this.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets( 0,0,0,0 )));
borderNone = true;
((javax.swing.plaf.basic.BasicInternalFrameUI)getUI()).getNorthPane().setPreferredSize( new java.awt.Dimension(0,0) );
//System.out.println( ((javax.swing.plaf.basic.BasicInternalFrameUI)getUI()).getNorthPane() );
//northPane = ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).getNorthPane();
//((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).setNorthPane( null );
if (menu != null) menu.setMaximizedFrame(this);
}
}
else if ( !this.isMaximum && borderNone)
{
System.out.println("Set maximum: "+this.getSize());
setNormalSize( this.getSize() );
/* BUG #955403 fixed - Recursive calls on maximize a internal frame
JDesktopPane desktopPane = this.getDesktopPane();
if(desktopPane != null){
// set not maximum all frames...
javax.swing.JInternalFrame[] jfs = desktopPane.getAllFrames();
for (int i=0; i<jfs.length; ++i)
{
if (jfs[i] != this)
{
try {
jfs[i].setMaximum(false);
} catch (Exception ex){}
}
}
}*/
borderNone = false;
((javax.swing.plaf.basic.BasicInternalFrameUI)getUI()).getNorthPane().setPreferredSize( new java.awt.Dimension(this.getNormalSize().width ,23) );
setPreferredSize(this.getNormalSize());
setSize(this.getNormalSize());
this.setBorder(borderNormal);
if (menu != null) menu.setMaximizedFrame(null);
//this.getDesktopPane().getDesktopManager().activateFrame(this);
try {
this.setSelected(true);
} catch (Exception ex){};
}
}
/**
* This method set the activeForm to the menu. It is useful when the user
* maximize windows and then close one. The frame that will activated will
* set activeForm in JMDIMenuBar class trought this method.
*
*/
private void onSelect()
{
if ( this.isMaximum)
{
if (menu != null) menu.setMaximizedFrame(this);
}
}
private void formAncestorResized(java.awt.event.HierarchyEvent evt) {//GEN-FIRST:event_formAncestorResized
}//GEN-LAST:event_formAncestorResized
/** Getter for property menu.
* @return Value of property menu.
*
*/
public it.businesslogic.ireport.gui.JMDIMenuBar getMenu() {
return menu;
}
/** Setter for property menu.
* We need a JMDIMenuBar to add, if needed, buttons to resize, close, minimize this
* window when maximized.
* @param menu New value of property menu.
*
*/
public void setMenu(it.businesslogic.ireport.gui.JMDIMenuBar menu) {
this.menu = menu;
}
/** Getter for property normalSize.
* @return Value of property normalSize.
*
*/
public java.awt.Dimension getNormalSize() {
return normalSize;
}
/** Setter for property normalSize.
* @param normalSize New value of property normalSize.
*
*/
public void setNormalSize(java.awt.Dimension normalSize) {
this.normalSize = normalSize;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel jPanel1;
// End of variables declaration//GEN-END:variables
private java.awt.Dimension normalSize;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -