1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Graphics a; a.drawOval(size.width/4 ,size.height/4 ,size.width/2 ,size.height/2 ); 在中心。 a.drawString("Hello world gj" ,20 ,200 ); Cbox() { setLayout(new FlowLayout ()); Checkbox cb = new Checkbox ("he" );s)&Checkbox(String s,boolean state). add(cb); setSize(200 ,200 ); } CheckboxGroup cbg = new CheckboxGroup (); Checkbox(String s,boolean state,CheckboxGroup cbg)&Checkbox(String s,CheckboxGroup cbg,boolean state);
Checkbox(String s)用来建复选框与单选框。
Choice()用来建下拉式单选。
Frame(String s)用来建窗口。
Button(String s)用来建按钮。
Label(String s)用来建标签。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 setLayout(new FlowLayout ()); Choice c = new Choice (); for (int i = 0 ;i < fontFamily.length;i++) c.add(fontFamily[i]); add(c); c = new Choice (); for (int i = 0 ;i < size.length;i++) c.add(size[i]+"" ); add(c); setSize(200 ,200 ); public class TestFrame extends Frame { public void doDemo () { Button b = new Button ("Press Me!" ); b.addActionListener(new ButtonHandler ()); add(b,BorderLayout.CENTER); pack(); setVisible(true ); } public static void main (String args[]) { TestFrame f = new TestFrame (); f.doDemo(); } public class ButtonHandler implements ActionListener { public void actionPerformed (ActionEvent e) { setTitle("Button's label is :" + e.getActionCommand()); } } }
如果main中加上这个函数
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});//////////就可以实现窗口关闭功能。
public class MouseMoveHandler implements MouseListener {
private Color source = null;
public void mouseEntered(MouseEvent e) {
source = e.getComponent().getBackground();
e.getComponent().setBackground(Color.PINK);
}
public void mouseExited(MouseEvent e) {
e.getComponent().setBackground(source);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
}
awt提供的控件:
Button
Label
Checkbox
CheckboxGroup
Choice
TextField
TextArea
List
Font
Image
Canvas
Graphics2D
Dialog
ScrollPanel
Menu
Toolkit
InputMethod
1 2 3 4 5 6 7 8 9 10 11 textTabbedPane = new JTabbedPane (JTabbedPane.BOTTOM); privateScrollPane = new JScrollPane (); privateTextPane = new JTextPane (); privateTextPane.setEditable(true ); privateScrollPane.setViewportView(privateTextPane); 上的内容。 textTabbedPane.addTab("private" ,privateScrollPane); TabbedPane上。 add(textTabbedPane)
在编写菜单的时候不需写setLayout(new FlowLayout());
如果在编写按钮的时候不写上面的代码,那么按钮就会变的很大。上一行代码是布局管理器。
应该始终有一个File菜单,它应该始终在菜单栏的最左边。菜单项New,Open…和Close(如
果有的话)
应该按上面的次序出现。New应该是第一项,Exit应该是最后一项。
如果有Edit项的话,应该为第二项,它应该有copy,paste,cut等功能。
如果有help项的话,应该是最后一项。
如果不把菜单加到菜单栏上,那么菜单栏就不会出现。
1 2 3 TextArea ta = new TextArea (10 ,20 );Scrollbar sb = new Scrollbar (Scrollbar.HORIZONTAL);
有两种布局管理器:流程布局管理器和边框布局管理器。
1.流程布局管理器
setLayout(new FlowLayout(FlowLayout.LEFT));
2.边框管理器
边框管理器使用add();使用边框管理器的容器只能有五个构件。
1 2 3 4 add(sb,"North" ); add(p,"South" );
调用了边框管理器后,构件的大小就不再受传入参数的制约。如果不指明就将占据剩余的整个空间。
1 2 3 4 Panel p = new Panel ();p.add(new Button ("HI" )); p.add(new TextField ("ldldl" ,10 ));
流程管理器可以兑现构件的优先大小。而边框管理器不行。此外还有3个管理器:
CardLayout(),仅允许在任何时候只有一个构件是可见的。
GridLayout()
GridBagLayout().
////////////////////////MenuBar mb = new MenuBar();
////////////////////////setMenuBar(mb);///////////此句用于设置菜单栏。
当一个构件和一个paint()方法都负责屏幕的同一部分时,总是构件获胜。
1)创建构件。
2)创建实现Listener接口的收听者。
3)构造该收听者的一个实例。
调用该构件add Listener()方法,同时传入刚建成的收听者类的实例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public SelfListener () { setLayout(new FlowLayout ()); for (int i = 0 ;i < btn.length;i++) { btn[i] = new Button (s[i]); btn[i].addActionListener(this ); add(btn[i]); } tf = new TextField (25 ); add(tf); setSize(200 ,300 ); } public void actionPerformed (ActionEvent e) { if (e.getSource() == btn[0 ]) nCon -= 1 ; else if (e.getSource() == btn[1 ]) nCon -= 2 ; else nCon -= 3 ; tf.setText(nCon + " Left." ); if (nCon < 3 ) btn[2 ].setEnabled(false ); if (nCon < 2 ) btn[1 ].setEnabled(false ); if (nCon == 0 ) { Label ab = new Label ("win!" ); add(ab,"South" ); btn[0 ].setEnabled(false ); } }
使用repaint()方法可以刷屏并调用paint()。
当画的图形位置不对时,有可能在屏幕上显示不出来。
1 2 3 4 tf.setText("Font Color is " + c.getItem(c.getSelectedIndex()) + cb[i].getLabel() );
当程序启动时paint()调用。当图文框被完全覆盖时,paint()被调用,当图文框放大时,paint()被调用。被最小化再还原时调用。
其余时间都不会调用paint()。
1 2 3 btn[i].addActionListener(this ); btn[i].addActionListener(this );
想让一个任意的类成为一个动作收听者,光实现一个actionperformed()的方法是不够的。因为单凭这一点不能
认为它实现了ActionListener接口。
当类中函数要用到其它函数中的变量时,特别是构件要声明成类的变量而不是函数中的变量。
publicTextPane是放在publicScrollPane上的,而publicScrollPane是放在textTabbedPane上的。
这样使用:
1 2 3 4 5 6 7 8 publicTextPane.setEditable(false ); publicScrollPane.setViewportView(publicTextPane); textTabbedPane.addTab("public" ,publicScrollPane);