Java 是否可以从JFileChooser中删除标题栏?
我试图显示一个没有标题栏的简单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
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);
}
}
所以本质上我希望我设置的边框是顶级标题栏。示例图像:
到目前为止,我还没有运气做到这一点,也没有发现任何其他人寻找类似的外观。
谢谢你的帮助!CheersJFileChooser只是一个Swing组件。它可以添加到任何容器中 因此,您可以创建一个未修饰的JDialog,并将JFileChooser的实例添加到对话框中 现在的问题是“打开”和“取消”按钮无法关闭对话框,因此您需要手动关闭对话框。您可能会覆盖JFileChooser的“approveSelection()
和
cancelSelection()`方法
我猜逻辑应该是调用super.approveSelection()或super.cancelSelection(),然后使用
SwingUtilities.windowForComponent(…)
方法获取父窗口,然后调用dispose()
在窗口上。标题栏是窗口的一个有用部分,允许用户在屏幕上移动它,为什么有人想隐藏它?您可以使用setDialogTitle()
更改标题栏上显示的文本。您可以检查setUndercorated(true)是否为;适用于JFileChooser。@Snoik,JFileChooser不是对话框或框架,它是添加到对话框或框架中的组件,因此它没有setUndecorated()方法。此外,如果您查看发布的代码,OP试图覆盖对话框的创建,以使对话框不被修饰。非常感谢您提到父对话框。难以置信,我忘记了这一点。确实,我必须覆盖批准/取消功能,但这将相当简单!