设置操作时,JButton文本会发生更改

时间:2016-03-26 01:04:02

标签: java swing jbutton

我正在开发一个swing项目,我有一个JButton,用JTextPane粗体转换文本。我使用Action来执行此操作。

这是Action

的代码
public static Action boldAction = new StyledEditorKit.BoldAction();

这是JButton

的代码
JButton bold = new JButton("B");
bold.setFont(new Font("Arial", Font.BOLD, 15));
bold.setBounds(393, 15, 100, 100);
bold.setBackground(Color.WHITE);
bold.setAction(boldAction);
frame.add(bold);

如果不包含Action,按钮上的文字就是粗体" B",这就是我想要的。出现的问题是,当我添加操作时,它会更改按钮上的文字以说出" font-bold"。

为什么会发生这种情况,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

StyledEditorKit提供的操作会更改属于Document子类提供的视图的JTextComponent模型,如here所示。要更改JButton使用的字体,请使用UIManager更改具有密钥"Button.font"的属性,如图here所示。

由于您想要动态更改按钮的外观,请使用UIManager获取按钮的预期字体,并在按钮{{1}中指定衍生字体},如下所示:

image

Action

答案 1 :(得分:1)

使用Action时,Action的属性默认为按钮。

如果您不想要“font-bold”,则需要在设置动作后更改文本:

resumeProducing()

也不要使用setBounds()方法。 Swing旨在与布局管理器一起使用。

JButton bold = new JButton( boldAction);
bold.setText("B");