📄 innerframe.java
字号:
package draw;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.beans.PropertyVetoException;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.plaf.basic.BasicInternalFrameUI;
/**
* Draw中的内部框架 <br/> 最大化时会隐藏标题栏,其标题显示在主窗口上, 最大、最小、关闭按钮会显示在菜单栏上
*
* @author Thihy
*
*/
public class InnerFrame extends JInternalFrame {
boolean isHidden = false;
protected Draw draw;
protected JMenuBar menubar;
protected JDesktopPane desktopPane;
BasicInternalFrameUI oldUi = null;
JPanel opPane = new JPanel();
public InnerFrame(final Draw draw) {
this.draw = draw;
menubar = draw.app.getJMenuBar();
desktopPane = draw.contentPane;
opPane = draw.getLittleMenuPane();
oldUi = (BasicInternalFrameUI) getUI();
setSize(200, 200);
maximizable = true;
closable = true;
addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
InnerFrame selectedFrame = (InnerFrame) e.getSource();
if (selectedFrame.isMaximum()) {
selectedFrame.hideNorthPanel();
draw.updateActionEnable();
opPane.setVisible(true);
try {
selectedFrame.setMaximum(true);
} catch (PropertyVetoException ex) {
ex.printStackTrace();
}
}
}
});
}
// 隐藏标题栏
public void hideNorthPanel() {
((BasicInternalFrameUI) this.getUI()).setNorthPane(null);
this.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
isHidden = true;
}
// 显示标题栏
public void showNorthPanel() {
this.setUI(oldUi);
this.putClientProperty("JInternalFrame.isPalette", Boolean.FALSE);
isHidden = false;
}
@Override
public void updateUI() {
super.updateUI();
if (isHidden) {
hideNorthPanel();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -