我想知道是否有可能展開JFrame,然後只顯示頂部的關閉按鈕或類似的東西..任何幫助將不勝感激。 細節: 其實我正在做一個項目,這是一個基於GUI的軟件,我已經在其中使用JdesktopPane,並且我使用JInternalFrames,因此在頂部顯示標題欄不僅適合我。有什麼辦法可以解決我的問題嗎?只顯示JFrame上的關閉按鈕undecorated
回答
基本上,一旦您刪除了邊框,就會對其功能(包括移動)負責。
本示例基本上使用JPanel
作爲「標題」窗格的佔位符,並使用BorderLayout
來佈局標題和內容。
實際關閉按鈕是一個簡單的JButton
,它使用一些圖像來表示關閉操作。顯然,這隻會看的權利在Windows上,這些按鈕都是正常的由OS本身......而我們沒有訪問該層中產生的......
public class TestUndecoratedFrame {
public static void main(String[] args) {
new TestUndecoratedFrame();
}
public TestUndecoratedFrame() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
TitlePane titlePane = new TitlePane();
JFrame frame = new JFrame("Testing");
frame.setUndecorated(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
((JComponent)frame.getContentPane()).setBorder(new LineBorder(Color.BLACK));
frame.add(titlePane, BorderLayout.NORTH);
frame.add(new JLabel("This is your content", JLabel.CENTER));
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TitlePane extends JPanel {
public TitlePane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1;
gbc.anchor = GridBagConstraints.EAST;
add(new CloseControl(), gbc);
}
}
public class CloseControl extends JButton {
public CloseControl() {
setBorderPainted(false);
setContentAreaFilled(false);
setFocusPainted(false);
setOpaque(false);
setBorder(new EmptyBorder(0, 0, 8, 12));
try {
setRolloverIcon(new ImageIcon(ImageIO.read(getClass().getResource("/Highlighted.png"))));
setRolloverEnabled(true);
setIcon(new ImageIcon(ImageIO.read(getClass().getResource("/Normal.png"))));
} catch (IOException ex) {
Logger.getLogger(TestUndecoratedFrame.class.getName()).log(Level.SEVERE, null, ex);
}
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SwingUtilities.getWindowAncestor(CloseControl.this).dispose();
}
});
}
}
}
謝謝..一種新的方式。 – nsthethunderbolt 2013-03-02 05:06:22
@nsthethunderbolt:在這種情況下,您可能可以利用內部框架圖標,見[此處](http://stackoverflow.com/a/10360374/230513)。 – trashgod 2013-03-02 06:40:07
@trashgod +1好主意 – MadProgrammer 2013-03-02 07:29:24
- 1. JFrame關閉按鈕
- 2. JFrame的彈出式關閉按鈕
- 3. 按鈕不顯示在Jframe
- 4. Java JFrame創建關閉按鈕
- 5. 用按鈕單擊關閉JFrame
- 6. 在eclipse中使用按鈕關閉JFrame
- 7. 關閉JFrame之前顯示提示
- 8. Java - 只關閉JFrame嗎?
- 9. ASP.NET關閉按鈕顯示PDF文檔
- 10. 關閉按鈕不顯示Bootstrap警報
- 11. 標題&&關閉按鈕不顯示
- 12. iOS中的FacebookSDK不顯示關閉按鈕,無法關閉
- 13. 如何隱藏在警報視圖的關閉按鈕和關閉動作,只顯示「打開應用」按鈕
- 14. 顯示按鈕的onclick彈出關閉按鈕
- 15. JavaFX UNDECORATED階段未顯示
- 16. PhoneGap的InAppBrowser上的完成/關閉按鈕不顯示
- 17. 在JFrame上單擊關閉按鈕時執行某些操作
- 18. Fancybox 2.1.5不顯示手機上的關閉按鈕
- 19. 在另一個jframe關閉事件顯示一個新的jframe
- 20. FancyBox關閉按鈕顯示四個按鈕鉻l
- 21. 爲什麼不jframe顯示按鈕?
- 22. JFrame沒有顯示按鈕或文本
- 23. 如何在Android上點擊按鈕顯示關閉菜單?
- 24. 如何在右上方顯示關閉按鈕而不是左
- 25. 當鼠標懸停在單詞上時顯示關閉按鈕
- 26. jQuery插件qtip2 - 關閉鼠標按下關閉按鈕上的工具提示
- 27. 無法顯示JFrame上的所有按鈕
- 28. 如何只顯示按鈕
- 29. JFrame在全屏幕沒有undecorated
- 30. 關閉按鈕只出現一次
你應該爲此創建一個自定義按鈕。 – tmwanik 2013-03-02 04:13:55
我可以擁有,但是不會顯示在右上角。它可以在那裏顯示? – nsthethunderbolt 2013-03-02 04:15:39
是的,可能是使用佈局管理器。 – tmwanik 2013-03-02 04:19:08