我想应用自己的关闭和最小化按钮。有没有办法改变JFrame
设计?
答案 0 :(得分:6)
诀窍在于PLAF和setDefaultLookAndFeelDecorated(true)
(Specifying Window Decorations)。
E.G。
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();
}
});
}
}
答案 1 :(得分:3)
认为你是在追随JWindow
http://docs.oracle.com/javase/7/docs/api/javax/swing/JWindow.html
然后,您可以创建自己的按钮,哪些操作可以最小化/关闭您的窗口
答案 2 :(得分:2)
我唯一知道可以做的就是向JFrame
添加WindowListener
并处理该侦听器中的结束事件。您几乎可以制作任何内容,例如显示对话框,甚至取消关闭JFrame
。
有关如何编写此类侦听器的更多详细信息,请参阅此tutorial。
至于最小化:据我所知,没有办法控制或修改这种行为,它完全由操作系统控制。
更改最小化/关闭/最大化按钮方面的唯一方法是使用自定义LookAndFeel并设置JFrame.setDefaultLookAndFeelDecorated (true);
。
答案 3 :(得分:0)
jframe undecorated
。 jlabel
。 Btn
添加自己的图标。 mouseListeners
和jlabel
添加System.exit(0);/set ICONIFIED option
指定代码,例如{{1}}