User interface 黑莓Java:TextField*没有插入符号?
我想要一个不可编辑的文本字段(或子类),它甚至没有显示插入符号。或者,我想要一个多行LabelField。这些都是可能的吗?是的,您可以覆盖每个UI元素的绘制方法 例如:User interface 黑莓Java:TextField*没有插入符号?,user-interface,blackberry,textfield,caret,labelfield,User Interface,Blackberry,Textfield,Caret,Labelfield,我想要一个不可编辑的文本字段(或子类),它甚至没有显示插入符号。或者,我想要一个多行LabelField。这些都是可能的吗?是的,您可以覆盖每个UI元素的绘制方法 例如: public class WhiteLabelField extends LabelField { public WhiteLabelField() { super(); } public WhiteLabelField(ObjectGroup text) {
public class WhiteLabelField extends LabelField
{
public WhiteLabelField()
{
super();
}
public WhiteLabelField(ObjectGroup text)
{
super(text);
}
public WhiteLabelField(Object text, long style)
{
super(text, style);
}
public void paint(Graphics _g)
{
_g.setColor(Color.WHITE);
super.paint(_g);
}
// Custom
public void setSmallFontSize()
{
setFont( Font.getDefault( ).derive( Font.PLAIN, 16 ));
}
}
是的,您可以覆盖每个UI元素的绘制方法 例如:
public class WhiteLabelField extends LabelField
{
public WhiteLabelField()
{
super();
}
public WhiteLabelField(ObjectGroup text)
{
super(text);
}
public WhiteLabelField(Object text, long style)
{
super(text, style);
}
public void paint(Graphics _g)
{
_g.setColor(Color.WHITE);
super.paint(_g);
}
// Custom
public void setSmallFontSize()
{
setFont( Font.getDefault( ).derive( Font.PLAIN, 16 ));
}
}
无焦点光标的文本字段
TextField drawFocus覆盖
如果文本太大,无法适应屏幕,您可以覆盖TextField中的drawFocus方法,因此可以进行滚动:
TextField readOnly = new TextField(READONLY)
{
protected void drawFocus(Graphics graphics, boolean on) {}
};
文本字段,用空字段分隔
另一个选项是将TextField拆分为多个,并用NullFields分隔:
class Scr extends MainScreen {
public Scr() {
String text = "Lorem ipsum dolor sit amet, consectetuer "
+ "adipiscing elit, sed diam nonummy nibh euismod "
+ "tincidunt ut laoreet dolore magna aliquam erat "
+ "volutpat. Ut wisi enim ad minim veniam, quis "
+ "nostrud exerci tation ullamcorper suscipit "
+ "lobortis nisl ut aliquip ex ea commodo consequat. "
+ "Duis autem vel eum iriure dolor in hendrerit in "
+ "vulputate velit esse molestie consequat, vel "
+ "illum dolore eu feugiat nulla facilisis at vero "
+ "eros et accumsan et iusto odio dignissim qui "
+ "blandit praesent luptatum zzril delenit augue "
+ "duis dolore te feugait nulla facilisi.";
text = addScrollText(text, 150);
}
private String addScrollText(String text, int partSize) {
while (0 < text.length()) {
int len = Math.min(partSize, text.length());
TextField readOnly = new TextField(NON_FOCUSABLE);
readOnly.setText(text.substring(0, len));
add(readOnly);
add(new NullField());
text = text.substring(len);
}
return text;
}
}
无焦点光标的文本字段
TextField drawFocus覆盖
如果文本太大,无法适应屏幕,您可以覆盖TextField中的drawFocus方法,因此可以进行滚动:
TextField readOnly = new TextField(READONLY)
{
protected void drawFocus(Graphics graphics, boolean on) {}
};
文本字段,用空字段分隔
另一个选项是将TextField拆分为多个,并用NullFields分隔:
class Scr extends MainScreen {
public Scr() {
String text = "Lorem ipsum dolor sit amet, consectetuer "
+ "adipiscing elit, sed diam nonummy nibh euismod "
+ "tincidunt ut laoreet dolore magna aliquam erat "
+ "volutpat. Ut wisi enim ad minim veniam, quis "
+ "nostrud exerci tation ullamcorper suscipit "
+ "lobortis nisl ut aliquip ex ea commodo consequat. "
+ "Duis autem vel eum iriure dolor in hendrerit in "
+ "vulputate velit esse molestie consequat, vel "
+ "illum dolore eu feugiat nulla facilisis at vero "
+ "eros et accumsan et iusto odio dignissim qui "
+ "blandit praesent luptatum zzril delenit augue "
+ "duis dolore te feugait nulla facilisi.";
text = addScrollText(text, 150);
}
private String addScrollText(String text, int partSize) {
while (0 < text.length()) {
int len = Math.min(partSize, text.length());
TextField readOnly = new TextField(NON_FOCUSABLE);
readOnly.setText(text.substring(0, len));
add(readOnly);
add(new NullField());
text = text.substring(len);
}
return text;
}
}
你也可以使用
RichTextField
和字段的样式。不聚焦的你会得到你想要的。你也可以使用RichTextField和字段的样式。不聚焦的你会得到你想要的。多行标签真的不是问题,我还有一个问题让我觉得它不起作用。至于TextField——实际上,你所建议的是一个无插入符号的TextField;但是,它不可滚动-因此,如果字段中的文本太长,无法在屏幕上显示,则无法查看。多行标签确实不是问题,我遇到了另一个问题,使我认为它不起作用。至于TextField——实际上,你所建议的是一个无插入符号的TextField;但是,它是不可滚动的-因此,如果字段中的文本太长,无法在屏幕上显示,无法查看。遗憾的是,如果RichTextField
的NON_FOCUSABLE
样式需要超过全屏高度,则不会滚动。不幸的是,如果RichTextField
的NON_FOCUSABLE
样式需要超过全屏高度,则不会滚动。