作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个按比例缩小的文本编辑器。有一个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/
下面是我用来制作 1px 文本描边轮廓的代码。但是如何使轮廓变粗呢?如果我只是用“5px”替换所有“1px”,结果看起来很疯狂。 HTML Hello! CSS .element { color:
我是一名优秀的程序员,十分优秀!