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

时间:2009-11-20 18:37:23

标签: java swing fonts joptionpane

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

这样的东西
   |Canecl|               |DoneSave| |Save|

2 个答案:

答案 0 :(得分:4)

我猜您的意思是JButtonJOptionPane内的字体太小。

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

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

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

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

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

关于“按钮的间距”问题:我不知道是否可以在没有延伸的情况下完成自己定制JOptionPane

答案 1 :(得分: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溢出或其他地方找到答案。