我正在构建一个桌面应用程序,需要使用外部JFrame来为用户提供各种绘图工具。
这是我当前的JFrame的样子:
![在此处输入图片说明] [1]
这是班级:
public class ChartToolFrame extends JFrame implements ActionListener{
private JToolBar tools;
public ChartToolFrame(JToolBar tools){
setUndecorated(true);
this.tools = tools;
getContentPane().setLayout(new BorderLayout());
getContentPane().add(tools, BorderLayout.NORTH);
setResizable(false);
this.setAlwaysOnTop(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
setVisible(true);
pack();
}
}
我目前正在使用Acryl的外观和感觉。当我调用setUndecorated(true)时,它没有摆脱标题栏。依赖JButton来处理JFrame至关重要,因为在关闭时,必须终止某种“操作模式”并且必须执行代码。
有没有办法使用与之相关的非默认外观来解开JFrame的设计?或者更好的是,有没有办法将方法调用与处理JFrame相关联?
答案 0 :(得分:1)
setUndecorated(boolean)
的文档明确说明..
禁用或启用此框架的装饰。
此方法只能在框架不可显示时调用 。 ..
答案 1 :(得分:0)
解决了它。我没有专注于JButton在dispose上执行代码,而是提供了一个重写的dispose()方法,它执行我需要的代码。这是我添加到ChartToolFrame类的方法:
@Override
public void dispose(){
//code needed to be executed
super.dispose();
}
希望这有助于其他人。