有人知道如何使JTextArea在所有平台上显示固定大小的字体吗?
我想制作一个带有保存/打开功能的简单代码编辑器,这很简单,但是我希望字体是固定大小的,最好使用Courier New。
问题是Courier New显然是专有的,而且它并不是所有系统默认安装的字体,大多数现代系统将其设置为默认的ClearType,这使得它看起来很糟糕。
我想自己制作带有更新-渲染-绘制功能的JPanel,重新发明JTextArea,并将字体保存为固定大小的位图,但这种方法似乎很傻,而且非常耗时。
我想在项目中包含一种免费的固定大小字体,并在所有平台上使用该字体,这似乎是可能的。然而,现代系统似乎会强制平滑所有字体,我想防止它这样做。
遗憾的是,Swing自动遵守系统首选项,因此如果不破坏用户的设置,似乎不行。
简而言之,有没有办法使JTextArea显示固定宽度的字体并禁用字体平滑/反锯齿(或至少切换),或者使用Swing完成这个任务是不可能的?
提前谢谢!
System.setProperty("awt.useSystemAAFontSettings","false");
System.property("swing.aatext",“false”);
2)您可以在paintComponent
方法的Graphics
对象上设置RenderingHints以禁用TEXT_ANTI_ALIASING(((Graphics2D)g)。setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,Boolean.FALSE);
),但您不能绝对保证以后不会更改。 - Guillaume PoletBoolean.FALSE
作为提示值。请改用RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
。对此我感到抱歉。 - Guillaume PoletJComboBox cb = new JComboBox(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()); JSpinner spinner = new JSpinner(new SpinnerNumberModel(12, 4, 240, 1)); JCheckBox italic = new JCheckBox("Italic"); JCheckBox bold = new JCheckBox("Bold");
将上述组件添加到一个 JPanel 中,添加必要的代码并完成。 - Guillaume Polet