java - JDialog:删除标题栏,保留边框

标签 java swing border jdialog

是否可以从 JDialog 中删除标题栏,但保留边框?

基本 SSCCE 如下所示:

package test;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.SwingUtilities;

public class SSCCE extends JFrame {
    private JDialog dialog;

    public SSCCE() {
        dialog = new JDialog();
        dialog.setSize(100, 100);
        dialog.add(new JList<>(new String[] { "One", "Two", "Three" }));
        dialog.setUndecorated(true);

        setSize(300, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public void showDialog() {
        dialog.setLocationRelativeTo(this);
        dialog.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                SSCCE ex = new SSCCE();
                ex.setVisible(true);
                ex.showDialog();
            }
        });
    }
}

运行它我看到这个:

JDialog with full titlebar and borders

但我不想要 JDialog 上的标题栏。标准答案是使用setUndecorated(true)。但随后我也失去了窗口边框,我不希望这样。看起来像这样:

JDialog with no titlebar and no borders

我想要的是这样的模型:

JDialog with just the borders

我如何实现这一目标?

编辑:

我尝试使用 LaF 边框之一,但得到了一些奇怪的结果。只是为了测试,我选择了“RootPane.errorDialogBorder”,并期望在我的对话框周围得到一个肥红色边框。但我得到了这个:

JDialog with LAF border

在我看来,这就像“RootPane.frameBorder”边框的未聚焦版本。为什么我得到了那个?

最佳答案

It needs to somehow be based on the current LaF border style.

正如您所知,不可能使用实际的对话框/框架边框。

似乎您需要一个边框来突出显示弹出窗口,以便它从文本字段中脱颖而出。我认为最接近的方法是使用 LAF 定义的边框。例如,您可以使用 UIManager 中定义的“TitledBorder.border”属性,它是一个简单的边框,但每个 LAF 似乎略有不同。

看看UIManager Default 。它显示每个 LAF 的所有边框

关于java - JDialog:删除标题栏,保留边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27588154/

相关文章:

border - 视网膜显示屏 : 1px border vs box-shadow as border - unsharp on retina, 不显示在常规显示屏上

java - 对 ExceptionHandler 类进行单元测试

java - Maven Cobertura 插件不会读取参数

java - 如何呈现复选框?

java - 如何正确结束简单的纸牌游戏?

java - 如何在 Java 中创建自定义 GUI 组件? (需要开始提示)

html - Safari 上不显示输入和文本区域边框

ios - Swift UITableView 之字形边框

JavaCC:自定义词法分析器错误消息

java - 如何在多个线程之间传递数据和信号