⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 innerframe.java

📁 一个简易的java画图软件
💻 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 + -