我正在编写一个Swing应用程序,我有一位阅读圣经的朋友。这个应用程序通过文本或段落进行搜索。在JTextField中使用自定义插入符号进行辅助功能
但我的朋友只能看到大字体大小和对比色。我将textField
的插入符的颜色更改为setCaretColor
,其中用户输入要搜索的文本。
尖号秀一样具有相同HIGHT字体矩形,但宽度少,我认为我的朋友罐头看不到。
是否有任何方法可以改变插入宽度以显示更大?
我正在编写一个Swing应用程序,我有一位阅读圣经的朋友。这个应用程序通过文本或段落进行搜索。在JTextField中使用自定义插入符号进行辅助功能
但我的朋友只能看到大字体大小和对比色。我将textField
的插入符的颜色更改为setCaretColor
,其中用户输入要搜索的文本。
尖号秀一样具有相同HIGHT字体矩形,但宽度少,我认为我的朋友罐头看不到。
是否有任何方法可以改变插入宽度以显示更大?
您是否看到过遍布互联网的Oreilly Swing书中的这个例子?看起来你可以定制插入符号很多。
http://www.java2s.com/Code/Java/Swing-JFC/Fanciercustomcaretclass.htm
这个例子很好,但我需要另一件事。我曾在Microsoft Word中看到过一件事。如果你有一个字体大小,你有一个字体高度相同的插入符号。当您更改字体的大小时,宽度脱字符不会改变,只有高度 – 2012-04-25 21:27:43
也许有三种方式我怎么能重现Caret
和选择日JTextComponents
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.DefaultCaret;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
public class TextFieldExample extends JFrame {
private static final long serialVersionUID = 1L;
public TextFieldExample() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
JTextField tfield = new JTextField(10);
tfield.setText("default text");
final JTextField tfield2 = new JTextField(10);
tfield2.setText("default text");
tfield2.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent fe) {
tfield2.setCaretPosition(tfield2.getDocument().getLength());
}
public void focusLost(FocusEvent fe) {
}
});
JTextField tfield3 = new JTextField(10);
tfield3.setText("default text");
tfield3.setCaret(new HighlightCaret());
panel.add(tfield);
panel.add(tfield2);
panel.add(tfield3);
add(panel);
pack();
setVisible(true);
}
class HighlightCaret extends DefaultCaret {
private final Highlighter.HighlightPainter unfocusedPainter =
new DefaultHighlighter.DefaultHighlightPainter(new Color(230, 230, 210));
private static final long serialVersionUID = 1L;
private boolean isFocused;
@Override
protected Highlighter.HighlightPainter getSelectionPainter() {
return isFocused ? super.getSelectionPainter() : unfocusedPainter;
}
@Override
public void setSelectionVisible(boolean hasFocus) {
if (hasFocus != isFocused) {
isFocused = hasFocus;
super.setSelectionVisible(false);
super.setSelectionVisible(true);
}
}
}
public static void main(String... args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TextFieldExample textFieldExample = new TextFieldExample();
}
});
}
}
我使用此代码测试,并且我看到脱字符'rentangle'的宽度在所有文本字段中似乎都是相同的。 – 2012-04-25 21:23:21
为什么不直接使用主机平台的放大功能? – trashgod 2012-04-25 15:26:28
lookAndFeel似乎不响应Windows主题的更改... – 2012-04-25 15:42:12
这不是@trashgod所指的主题,它是(Windows 7)控制面板|外观和个性化| ..显示或..易于访问居中/使电脑更容易看/打开放大镜。 – 2012-04-26 05:27:27