Java 是否可以从JFileChooser中删除标题栏?

Java 是否可以从JFileChooser中删除标题栏?,java,swing,java-8,jfilechooser,Java,Swing,Java 8,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 CustomFileCho

我试图显示一个没有标题栏的简单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);

    }
}
所以本质上我希望我设置的边框是顶级标题栏。示例图像:

到目前为止,我还没有运气做到这一点,也没有发现任何其他人寻找类似的外观。
谢谢你的帮助!Cheers

JFileChooser只是一个Swing组件。它可以添加到任何容器中

因此,您可以创建一个未修饰的JDialog,并将JFileChooser的实例添加到对话框中

现在的问题是“打开”和“取消”按钮无法关闭对话框,因此您需要手动关闭对话框。您可能会覆盖JFileChooser的“approveSelection()
cancelSelection()`方法


我猜逻辑应该是调用super.approveSelection()或super.cancelSelection(),然后使用
SwingUtilities.windowForComponent(…)
方法获取父窗口,然后调用
dispose()
在窗口上。

标题栏是窗口的一个有用部分,允许用户在屏幕上移动它,为什么有人想隐藏它?您可以使用
setDialogTitle()
更改标题栏上显示的文本。您可以检查setUndercorated(true)是否为;适用于JFileChooser。@Snoik,JFileChooser不是对话框或框架,它是添加到对话框或框架中的组件,因此它没有setUndecorated()方法。此外,如果您查看发布的代码,OP试图覆盖对话框的创建,以使对话框不被修饰。非常感谢您提到父对话框。难以置信,我忘记了这一点。确实,我必须覆盖批准/取消功能,但这将相当简单!