java的标签开拓
标签精确地运作:安顿一个标签到窗体上。这对没有标签的TextFields和Text areas 来说很是的重要,假如我们简朴地想安顿文字的信息在窗体上也能同样的利用。我们能像本章中第一个例程中演示的那样,利用drawString()里边的paint()在确定的位置去安放一个文字。当我们利用的标签答允我们通过机关打点插手其它的文字组件。(在这章的后头我们将进入接头。)
利用构建器我们能建设一条包罗初始化文字的标签(这是我们典范的作法),一个标签包罗一行CENTER(中间)、LEFT(左)和RIGHT(右)(静态的功效取整界说在类标签里)。假如我们健忘了可以用getText()和getalignment()读取值,我们同样可以用setText()和setAlignment()来改变和调解。下面的例子将演示标签的特点:
//: Label1.java // Using labels import java.awt.*; import java.applet.*; public class Label1 extends Applet { TextField t1 = new TextField("t1", 10); Label labl1 = new Label("TextField t1"); Label labl2 = new Label(" "); Label labl3 = new Label(" ", Label.RIGHT); Button b1 = new Button("Test 1"); Button b2 = new Button("Test 2"); public void init() { add(labl1); add(t1); add(b1); add(labl2); add(b2); add(labl3); } public boolean action (Event evt, Object arg) { if(evt.target.equals(b1)) labl2.setText("Text set into Label"); else if(evt.target.equals(b2)) { if(labl3.getText().trim().length() == 0) labl3.setText("labl3"); if(labl3.getAlignment() == Label.LEFT) labl3.setAlignment(Label.CENTER); else if(labl3.getAlignment()==Label.CENTER) labl3.setAlignment(Label.RIGHT); else if(labl3.getAlignment() == Label.RIGHT) labl3.setAlignment(Label.LEFT); } else return super.action(evt, arg); return true; } } ///:~
首先是标签的最典范的用途:标志一个文本字段或文本区域。在例程的第二部门,当我们按下“test 1”按钮通过setText()将一串空的空格插入到的字段里。因为空的空格数不便是同样的字符数(在一个等比例隔断的字库里),当插入文字到标签里时我们会看到文字将被省略掉。在例子的第三部门保存的空的空格在我们第一次按下“test 2”会发明标签是空的(trim()删除了每个字符串末了部门的空格)而且在开头的左列插入了一个短的标签。在事情的其余时间中我们按下按钮举办调解,因此就能看到结果。
我们大概会认为我们可以建设一个空的标签,然后用setText()安顿文字在内里。然而我们不能在一个空标签内插手文字-这或许是因为空标签没有宽度-所以建设一个没有文字的空标签是没有用处的。在上面的例子里,“blank”标签里布满空的空格,所以它足够容纳后头插手的文字。
同样的,setAlignment()在我们用构建器建设的典范的文字标签上没有浸染。这个标签的宽度就是文字的宽度,所以不能对它举办任何的调解。可是,假如我们启动一个长标签,然后把它酿成短的,我们就可以看到调解的结果。
这些导致事件连同它们最小化的尺寸被挤压的状况被措施片利用的默认机关打点器所发明。有关机关打点器的部门包括在本章的后头。