我想应用我自己的关闭和最小化按钮。有没有办法改变JFrame
设计?
问问题
8868 次
4 回答
6
诀窍在于PLAF和setDefaultLookAndFeelDecorated(true)
(指定窗饰)。
例如
import java.awt.BorderLayout;
import javax.swing.*;
public class FrameCloseButtonsByLookAndFeel {
FrameCloseButtonsByLookAndFeel() {
String[] names = {
UIManager.getSystemLookAndFeelClassName(),
UIManager.getCrossPlatformLookAndFeelClassName()
};
for (String name : names) {
try {
UIManager.setLookAndFeel(name);
} catch (Exception e) {
e.printStackTrace();
}
// very important to get the window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame f = new JFrame(UIManager.getLookAndFeel().getName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel gui = new JPanel(new BorderLayout());
f.setContentPane(gui);
JTree tree = new JTree();
tree.setVisibleRowCount(4);
gui.add(tree, BorderLayout.LINE_START);
gui.add(new JScrollPane(new JTextArea(3,15)));
JToolBar toolbar = new JToolBar();
gui.add(toolbar, BorderLayout.PAGE_START);
for (int ii=1; ii<5; ii++) {
toolbar.add(new JButton("Button " + ii));
if (ii%2==0) {
toolbar.addSeparator();
}
}
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new FrameCloseButtonsByLookAndFeel();
}
});
}
}
于 2012-06-06T12:33:43.420 回答
3
认为你是在 JWindow 之后
http://docs.oracle.com/javase/7/docs/api/javax/swing/JWindow.html
然后,您可以创建自己的按钮,这些操作可以最小化/关闭您的窗口
于 2012-06-06T11:39:18.723 回答
2
我知道唯一可以做的就是在该侦听器中添加一个WindowListener
并JFrame
处理关闭事件。您几乎可以进行任何操作,例如显示对话框甚至取消关闭JFrame
.
有关如何编写此类侦听器的更多详细信息,请参阅本教程。
至于最小化:据我所知,没有办法控制或修改这种行为,它完全由操作系统控制。
更改最小化/关闭/最大化按钮方面的唯一方法是使用自定义 LookAndFeel 和设置JFrame.setDefaultLookAndFeelDecorated (true);
。
于 2012-06-06T11:39:07.857 回答
0
- 设置
jframe undecorated
。 - 为每个按钮放置一个
jlabel
。 - 为每个
Btn
. - 放置
mouseListeners
每个jlabel
并指定代码,例如,System.exit(0);/set ICONIFIED option
于 2013-12-29T12:51:06.317 回答