min*_*ino 9 java swing jtextpane
我有一个JTextPane,我在JTextPane中有一些文本.但是,因为我一直在Pane中使用HTML,所以文本似乎已自动更改为Times New Roman.
我正在尝试将JTextPane中的字体类型设置为GUI的默认字体(当它不是HTML时,JTextPane的字体).但是,我不能只将字体设置为一种字体,因为它与操作系统不同,因此我想找到一种方法来获取默认字体,然后将我拥有的文本更改为默认字体.
为了演示文本在转换时如何交换到Times New Roman,以下代码是我使用的格式.我怎么能改变它来实现我的目标?
import javax.swing.JFrame;
import javax.swing.JTextPane;
public class GUIExample {
public static void main(String[] args) {
JFrame frame = new JFrame("My App");
frame.setSize(300,300);
JTextPane pane = new JTextPane();
pane.setContentType("text/html");
pane.setText("<html><b>This is some text!</b></html>");
frame.add(pane);
frame.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Luk*_*ood 22
以下将做到这一点:
pane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true);
Run Code Online (Sandbox Code Playgroud)
(注意JTextPane延伸JEditorPane.)
更新(2016年8月):
为了使设置能够在外观和系统更改中生存(例如,在Windows控制面板中更改了字体),可以在此处放置以下行:
@Override
public void updateUI() {
super.updateUI();
putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true);
}
Run Code Online (Sandbox Code Playgroud)
(这在施工期间也称为.)
最简单的方法可能是这样的:
string fontfamily = pane.getFont().getFamily();
Run Code Online (Sandbox Code Playgroud)
这将为您提供默认字体.然后使用CSS应用它:
pane.setText("<html><body style=\"font-family: " + fontfamily + "\"<b>This is some text!</b></html>");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11452 次 |
| 最近记录: |