更改字体大小并在 JOptionPane 中的按钮之间留出空间

发布于 2024-08-12 03:56:48 字数 151 浏览 3 评论 0原文

我的 JOptionPanes 中的文本太小,我想知道如何更改窗格内文本的字体。另外,我想在两个按钮之间设置一个空格。

像这样的东西

   |Canecl|               |DoneSave| |Save|

The text in my JOptionPanes are way to small I was wondering how I could change the font of the text inside the pane. Also, I would like to be set a space between two buttons.

Something like

   |Canecl|               |DoneSave| |Save|

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云醉月微眠 2024-08-19 03:56:48

我猜您的意思是 JOptionPane 内的 JButton 上的字体太小。

为此,我建议使用 Darryl Burke 的 Swing Utils。现在,您可以轻松地

for (JButton button : SwingUtils.getDescendantsOfType(JButton.class, pane)) {
    button.setFont(new Font("Verdana", Font.BOLD, 32));
}

JOptionPane 窗格内的所有 JButton 上设置字体。

如果您想设置 JOptionPane 消息本身的字体,请使用例如

UIManager.put(
    "OptionPane.messageFont",
    new FontUIResource(new Font("Verdana", Font.BOLD, 32))
);

关于“按钮间距”问题:我不知道是否可以在不扩展 & 的情况下完成此操作。自己制作一个自定义的JOptionPane

I guess you mean the fonts on your JButtons inside the JOptionPane are too small.

For that I suggest using Swing Utils by Darryl Burke. Now you can easily do e.g.

for (JButton button : SwingUtils.getDescendantsOfType(JButton.class, pane)) {
    button.setFont(new Font("Verdana", Font.BOLD, 32));
}

to set the fonts on all JButtons inside of JOptionPane pane.

If you want to set the font of the JOptionPane message itself, use e.g.

UIManager.put(
    "OptionPane.messageFont",
    new FontUIResource(new Font("Verdana", Font.BOLD, 32))
);

In regard to the "spacing of buttons" question: I don't know if that can be done without extending & make a customized JOptionPane yourself.

浮萍、无处依 2024-08-19 03:56:48

您不能指定 3 个按钮中的 2 个按钮之间的间距(根据 OP 的问题),但您可以增加所有按钮之间的间距大小:

JPanel buttonPanel                     = (JPanel) myOptionPane.getComponent(1);   
BasicOptionPaneUI.ButtonAreaLayout lm2 = (BasicOptionPaneUI.ButtonAreaLayout) buttonPanel.getLayout();
lm2.setPadding(20);
lm2.setSyncAllWidths(false);     // buttons will vary in size as needed.

或者可能类似:

lm2.setPadding(lm2.getPadding() * 2)  // double the spacing between ALL buttons.

如果只有 2 个按钮,则使用这些 LayoutManager调用你就可以达到想要的结果。

然而,对于按钮之间不同大小的空间,您需要实现自己的 JDialog,在其中您自己控制其 JPanel 的布局。

JOptionPane 由 2 个 JPanel 组成...一个用于消息(和图标)本身,另一个用于按钮,这就是我们上面 getComponent(1) 的原因。

我知道这个问题已经有 4 年历史了,但我做出这个答案是因为我今天有类似的需求,并且在堆栈溢出或其他地方找不到答案。

You cannot specify a spacing between just 2 buttons out of 3 (as per the OP's question) but you can increase the size of the spacing between ALL the buttons :

JPanel buttonPanel                     = (JPanel) myOptionPane.getComponent(1);   
BasicOptionPaneUI.ButtonAreaLayout lm2 = (BasicOptionPaneUI.ButtonAreaLayout) buttonPanel.getLayout();
lm2.setPadding(20);
lm2.setSyncAllWidths(false);     // buttons will vary in size as needed.

or perhaps something like :

lm2.setPadding(lm2.getPadding() * 2)  // double the spacing between ALL buttons.

If there were just 2 buttons, then using these LayoutManager calls you could achieve the desired outcome.

However for varying-sized spaces between the buttons you need to implement your own JDialog where you control the layout of its JPanel yourself.

A JOptionPane is made up of 2 JPanels... one for the message (and icon) itself, and one for the buttons, that's why we getComponent(1) above.

I know the question is 4 years old but I made this answer because I had a similar need today and couldn't find the answer ANYWHERE on Stack overflow or elsewhere.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文