0

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

就像是

   |Canecl|               |DoneSave| |Save|
4

2 回答 2

4

我猜你的意思是你JButton的 s 里面的字体JOptionPane太小了。

为此,我建议使用Darryl Burke 的Swing Utils。现在你可以很容易地做例如

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

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

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

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

关于“按钮间距”问题:我不知道是否可以在不扩展和自定义的情况下做到这JOptionPane一点。

于 2009-11-20T19:08:49.433 回答
0

您不能仅指定 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 年历史了,但我之所以做出这个答案是因为我今天有类似的需求,并且在 Stack Overflow 或其他地方都找不到答案。

于 2015-09-17T10:03:53.810 回答