可以从 JFileChooser 中删除标题栏吗?
Possible to remove Title bar from JFileChooser?
我正在尝试显示一个没有标题栏的简单 JFileChooser。
下面是示例代码:
package ca.customfilepicker.main;
import java.awt.Component;
import java.awt.HeadlessException;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
class CustomFileChooser
{
public static void main(String args[]) {
JFileChooser chooser = new JFileChooser() {
@Override
protected JDialog createDialog(Component parent) throws HeadlessException {
JDialog diag = super.createDialog(parent);
//diag.setUndecorated(true);
return diag;
}
};
chooser.setBorder(BorderFactory.createTitledBorder("Open"));
chooser.showOpenDialog(null);
}
}
所以基本上我希望我设置的边框是顶级标题栏。示例图片:
到目前为止,我实现这一目标的运气为零,也没有发现任何其他人正在寻找类似的外观。
感谢帮助!干杯
JFileChooser
只是一个Swing组件。它可以添加到任何容器。
因此您可以创建一个未修饰的 JDialog 并将 JFileChooser 的一个实例添加到对话框中。
现在的问题是“打开”和“取消”按钮不会关闭对话框,因此您需要手动关闭。您可能会覆盖 JFileChooser 的“approveSelection()and
cancelSelection()` 方法。
我猜逻辑是调用 super.approveSelection() 或 super.cancelSelection() 然后使用 SwingUtilities.windowForComponent(...)
方法获取父 window 然后在 window.
上调用 dispose()
我正在尝试显示一个没有标题栏的简单 JFileChooser。 下面是示例代码:
package ca.customfilepicker.main;
import java.awt.Component;
import java.awt.HeadlessException;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
class CustomFileChooser
{
public static void main(String args[]) {
JFileChooser chooser = new JFileChooser() {
@Override
protected JDialog createDialog(Component parent) throws HeadlessException {
JDialog diag = super.createDialog(parent);
//diag.setUndecorated(true);
return diag;
}
};
chooser.setBorder(BorderFactory.createTitledBorder("Open"));
chooser.showOpenDialog(null);
}
}
所以基本上我希望我设置的边框是顶级标题栏。示例图片:
到目前为止,我实现这一目标的运气为零,也没有发现任何其他人正在寻找类似的外观。 感谢帮助!干杯
JFileChooser
只是一个Swing组件。它可以添加到任何容器。
因此您可以创建一个未修饰的 JDialog 并将 JFileChooser 的一个实例添加到对话框中。
现在的问题是“打开”和“取消”按钮不会关闭对话框,因此您需要手动关闭。您可能会覆盖 JFileChooser 的“approveSelection()and
cancelSelection()` 方法。
我猜逻辑是调用 super.approveSelection() 或 super.cancelSelection() 然后使用 SwingUtilities.windowForComponent(...)
方法获取父 window 然后在 window.
dispose()