我想知道是否有可能展开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