gpt4 book ai didi

java - 删除斜体或粗体,而不删除其他格式

转载 作者:行者123 更新时间:2023-11-29 03:10:20 25 4
gpt4 key购买 nike

我正在开发一个按比例缩小的文本编辑器。有一个JLabel,应该做成斜体,粗体,还有不同的字体等等。这已经有效,但我有一个问题,当文本为斜体时 加粗以仅删除其中一个,当再次单击该选项时。例如。当它是斜体和粗体时,我再次单击斜体,它也会删除粗体结构。

我的代码看起来像这样(斜体示例,粗体看起来一样):

italic.addActionListener(
e -> {
if(text.getFont().getStyle() != Font.ITALIC) {
Font f = new Font(text.getFont().getName(), text.getFont().getStyle() | Font.ITALIC, text.getFont().getSize());
text.setFont(f);
} else {
Font f = new Font(text.getFont().getName(), text.getFont().getStyle() - Font.ITALIC, text.getFont().getSize());
text.setFont(f);
}
}
);

我想到的唯一解决方案是检查所有可能的情况,但我想还有更简单的解决方案。

最佳答案

您可以使用 XOR 运算符 ^ 来翻转所需的字体样式位。

斜体掩码为 2,粗体掩码为 1。

例如:

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;

public class TestBitFlip extends JPanel {
private JLabel label = new JLabel("Fubarlicious!");

public TestBitFlip() {
add(label);
add(new JButton(new FontAction("Bold", KeyEvent.VK_B, Font.BOLD)));
add(new JButton(new FontAction("Italic", KeyEvent.VK_I, Font.ITALIC)));
}

private class FontAction extends AbstractAction {
private int mask;

public FontAction(String name, int mnemonic, int mask) {
super(name);
putValue(MNEMONIC_KEY, mnemonic);
this.mask = mask;
}

@Override
public void actionPerformed(ActionEvent e) {
Font font = label.getFont();
int style = font.getStyle();
style ^= mask;
font = font.deriveFont(style);
label.setFont(font);
}
}

private static void createAndShowGui() {
TestBitFlip mainPanel = new TestBitFlip();

JFrame frame = new JFrame("TestBitFlip");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}

关于java - 删除斜体或粗体,而不删除其他格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29717666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com