關(guān)于JInternalFrame去掉Title bar的問題
自己實(shí)在是個(gè)懶人,blog難得更新一次,更新也是一些雞毛蒜皮的小東西。不過還是希望能對(duì)其他朋友或自己將來遇到類似問題能有個(gè)解答。最新在做一個(gè)swing項(xiàng)目,客戶要求能把JInternalFrame的Title bar去掉,同時(shí)還能加回來。由于網(wǎng)上搜一下沒有找到解決辦法,只能自己研究一下并改了下JInternalFrame,先記錄如下:import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ComponentEvent;
import java.awt.peer.ComponentPeer;
import java.beans.PropertyVetoException;
import javax.swing.ActionMap;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.plaf.InternalFrameUI;
import javax.swing.plaf.basic.BasicInternalFrameUI;
public class MCOCInternalFrame extends JInternalFrame {
//private String lookAndFeel = null;
BasicInternalFrameUI orgUi = null;
BasicInternalFrameUI newUi = null;
JComponent northPanel = null;
private boolean isHidden = false;
public MCOCInternalFrame() {
super();
northPanel = ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).getNorthPane();
orgUi = ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI());
newUi = new BasicInternalFrameUI(this);
}
public void showNorthPanel() {
this.setUI(orgUi);
this.putClientProperty("JInternalFrame.isPalette", Boolean.FALSE);
isHidden = false;
}
public void hideNorthPanel() {
this.setUI(newUi);
((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).setNorthPane(null);
this.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
isHidden = true;
}
public void updateUI() {
super.updateUI();
if (isHidden) {
hideNorthPanel();
}
}
}
創(chuàng)建該InternalFrame對(duì)象后,通過showNorthPanel(), hideNorthPanel()來顯示或隱藏title bar,另外updateUI()重寫是因?yàn)榻缑姹粍?dòng)態(tài)改變lookandfeel時(shí),保證title bar上多的一小個(gè)bar出現(xiàn)。
posted on 2008-01-18 22:02 亙古頑石 閱讀(637) 評(píng)論(0) 編輯 收藏