【发布时间】:2011-12-21 09:01:14
【问题描述】:
这是我目前所拥有的,但该字段中的文本没有消除锯齿。我已经尝试用谷歌搜索它一段时间,但找不到任何讨论它的线程(令我惊讶的是)。有谁知道如何做到这一点?
public class SearchField extends JTextField{
public SearchField(){
super();
this.setOpaque(false);
this.setPreferredSize(new Dimension(fieldWidth, fieldHeight));
this.setBorder(new EmptyBorder(4,8,4,8));
this.setFont(fieldFont);
}
public void paintComponent(Graphics paramGraphics){
Graphics2D g = (Graphics2D) paramGraphics;
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g.setColor(ColorConstants.LIGHT_GRAY);
g.fillRoundRect(0,0,fieldWidth,fieldHeight,4,4);
super.paintComponent(g);
}
}
【问题讨论】:
-
StackOverflow 上的这个问题可能会有所帮助:how to make JTextPane paint anti-aliased font?
-
g.fillRoundRect(0,0,fieldWidth,fieldHeight,4,4);这听起来像是标准JTextField上的custom border 的工作。 -
如果一行简单的代码就可以解决问题并且足够高效,为什么还要使用自定义边框呢?但我必须承认,这是一个很好的观点。
-
为什么要打扰,因为从长远来看,如果你跟随你正在使用的任何框架的风向(而不是绕道而行),你将是最有效率的。边界之风是......使用边界
-
为什么不使用我们可以使用的工具来构建我们需要的组件呢?边框也只是另一个类,因此在这种情况下,
RoundRectangle的效率/后果可以很好地完成这项工作。不过不要争论——有很多方法可以做到。
标签: java swing fonts antialiasing