我有两个按钮来编辑文本中的字体。粗体按钮和斜体按钮,它们分别工作正常,但不是很好。如何让我的按钮工作? (粗体+斜体)
final JToggleButton boldbuttonpage1 = new JToggleButton("");
boldbuttonpage1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(boldbuttonpage1.isSelected()){
textpage1.setFont(new Font("Arial", Font.BOLD, 12));
}
else textpage1.setFont(new Font("Arial", Font.PLAIN, 12));
}
});
boldbuttonpage1.setBounds(21, 32, 27, 23);
gtapage1.add(boldbuttonpage1);
final JToggleButton italicbuttonpage1 = new JToggleButton("");
italicbuttonpage1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(italicbuttonpage1.isSelected()){
textpage1.setFont(new Font("Arial", Font.ITALIC, 12));
}
else textpage1.setFont(new Font("Arial", Font.PLAIN, 12));
}
});
italicbuttonpage1.setBounds(21, 93, 27, 23);
gtapage1.add(italicbuttonpage1);
答案 0 :(得分:2)
当您按下一个按钮设置字体时,您覆盖前一个字体,否定上一个按钮按下的任何可能的效果。我自己,我会让两个ActionListeners(或ItemListeners)调用相同的方法,一个检查两个按钮的状态,并相应地设置字体与按钮值。
另外,根据我的评论,摆脱Eclipse标签,而是在你的问题中添加一个Swing标签,这样就不会误导任何人。 Eclipse只是您作为IDE使用的工具,与您的问题无关。
顺便说一句,您不应该设置组件的边界或使用空布局,而是希望使用适当的布局管理器。
修改强>
你问:
检查按钮状态的方法?你能详细说明吗?
您已经知道如何通过isSelected()
方法调用来检查按钮的状态。而不是在按下按钮时只检查一个按钮,检查两者。实际上,您可以为两个按钮提供相同的ActionListener:
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
// check selected states of both button one and two and set font accordingly
// you can use if (foo && bar) {...}
// else if (foo) {...}
// else if (bar) {...}
// else {.. default...}
}
};
button1.addActionListener(actionListener);
button2.addActionListener(actionListener);