我正在开发一个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"。
为什么会发生这种情况,我该如何解决这个问题?
答案 0 :(得分:1)
StyledEditorKit
提供的操作会更改属于Document
子类提供的视图的JTextComponent
模型,如here所示。要更改JButton
使用的字体,请使用UIManager
更改具有密钥"Button.font"
的属性,如图here所示。
由于您想要动态更改按钮的外观,请使用UIManager
获取按钮的预期字体,并在按钮{{1}中指定衍生字体},如下所示:
Action
答案 1 :(得分:1)
使用Action时,Action的属性默认为按钮。
如果您不想要“font-bold”,则需要在设置动作后更改文本:
resumeProducing()
也不要使用setBounds()方法。 Swing旨在与布局管理器一起使用。
JButton bold = new JButton( boldAction);
bold.setText("B");