Graphics a;
a.drawOval(size.width/4,size.height/4,size.width/2,size.height/2);此时椭圆在中心。
a.drawString("Hello world gj",20,200);///20是最左的象素坐标,200是基线
Cbox()
{
setLayout(new FlowLayout());
Checkbox cb = new Checkbox("he");//复选框有2个构造器Checkbox(String s)&Checkbox(String s,boolean state).
add(cb);///if there isn't this statement, the Checkbox won't appear.
setSize(200,200);
}
a.drawOval(size.width/4,size.height/4,size.width/2,size.height/2);此时椭圆在中心。
a.drawString("Hello world gj",20,200);///20是最左的象素坐标,200是基线
Cbox()
{
setLayout(new FlowLayout());
Checkbox cb = new Checkbox("he");//复选框有2个构造器Checkbox(String s)&Checkbox(String s,boolean state).
add(cb);///if there isn't this statement, the Checkbox won't appear.
setSize(200,200);
}
CheckboxGroup cbg = new CheckboxGroup();
Checkbox(String s,boolean state,CheckboxGroup cbg)&Checkbox(String s,CheckboxGroup cbg,boolean state);/这样可以建单选框。
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)用来建标签。
Choice()用来建下拉式单选。
Frame(String s)用来建窗口。
Button(String s)用来建按钮。
Label(String s)用来建标签。
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);
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());这里getActionCommand()函数返回的是控件的名称。
}
}
}
如果main中加上这个函数
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});//就可以实现窗口关闭功能。
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});//就可以实现窗口关闭功能。
public class MouseMoveHandler implements MouseListener {
private Color source = null;
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);
}
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) {
}
}
}
public void mouseReleased(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
}
awt提供的控件:
Button
Label
Checkbox
CheckboxGroup
Choice
TextField
TextArea
List
Button
Label
Checkbox
CheckboxGroup
Choice
TextField
TextArea
List
Font
Image
Canvas
Graphics2D
Dialog
ScrollPanel
Menu
Toolkit
InputMethod
Image
Canvas
Graphics2D
Dialog
ScrollPanel
Menu
Toolkit
InputMethod
textTabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);/将标签放在下部。
privateScrollPane = new JScrollPane();
privateTextPane = new JTextPane();
privateScrollPane = new JScrollPane();
privateTextPane = new JTextPane();
privateTextPane.setEditable(true);///这是把JTextPane设置为可以编辑的。(是否能让用户编辑)
// privateTextPane.setName("");//这句似乎没什么用。
privateScrollPane.setViewportView(privateTextPane);///JScrollPane可以显示JTextPane上的内容。
textTabbedPane.addTab("private",privateScrollPane);//这句才是把最重要的。把JScrollPane放在JTabbedPane上。
add(textTabbedPane)///把JTabbedPane放在JFrame上。
// privateTextPane.setName("");//这句似乎没什么用。
privateScrollPane.setViewportView(privateTextPane);///JScrollPane可以显示JTextPane上的内容。
textTabbedPane.addTab("private",privateScrollPane);//这句才是把最重要的。把JScrollPane放在JTabbedPane上。
add(textTabbedPane)///把JTabbedPane放在JFrame上。
在编写菜单的时候不需写setLayout(new FlowLayout());
如果在编写按钮的时候不写上面的代码,那么按钮就会变的很大。上一行代码是布局管理器。
应该始终有一个File菜单,它应该始终在菜单栏的最左边。菜单项New,Open...和Close(如果有的话)
应该按上面的次序出现。New应该是第一项,Exit应该是最后一项。
如果有Edit项的话,应该为第二项,它应该有copy,paste,cut等功能。
如果有help项的话,应该是最后一项。
应该按上面的次序出现。New应该是第一项,Exit应该是最后一项。
如果有Edit项的话,应该为第二项,它应该有copy,paste,cut等功能。
如果有help项的话,应该是最后一项。
如果不把菜单加到菜单栏上,那么菜单栏就不会出现。
TextArea ta = new TextArea(10,20);/用于创建文本框。第一个参数为高度,第二个为长度。
Scrollbar sb = new Scrollbar(Scrollbar.HORIZONTAL);用于建一个水平方向的控制条。
Scrollbar sb = new Scrollbar(Scrollbar.HORIZONTAL);用于建一个水平方向的控制条。
///有两种布局管理器:流程布局管理器和边框布局管理器。
setLayout(new FlowLayout(FlowLayout.LEFT));这便是流程管理器
setLayout(new FlowLayout(FlowLayout.LEFT));这便是流程管理器
///边框管理器是add();使用边框管理器的容器只能有五个构件。
/// add(sb,"North");//这就是边框管理器。之前不再用setLayout(new FlowLayout());
/// add(sb,"North");//这就是边框管理器。之前不再用setLayout(new FlowLayout());
add(p,"South");//“South”一定要大写。
//调用了边框管理器后,构件的大小就不再受传入参数的制约。如果不指明就将占据剩余的整个空间。
Panel p = new Panel();//创建新面板。
p.add(new Button("HI"));
p.add(new TextField("ldldl",10));//可以将几个构件锁在一起。
/流程管理器可以兑现构件的优先大小。而边框管理器不行。此外还有3个管理器:
/CardLayout(),仅允许在任何时候只有一个构件是可见的。
GridLayout(),GridBagLayout().
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);///此句用于设置菜单栏。
setMenuBar(mb);///此句用于设置菜单栏。
//new JMenu("String").add(new JMenuItem("String"));菜单添加菜单项
///new JMenuBar().add(new JMenu("String"))///菜单栏添加菜单
/// new JFrame("String").setJMenuBar(new JMenuBar());/菜单栏放置在窗体上。
///new JMenuBar().add(new JMenu("String"))///菜单栏添加菜单
/// new JFrame("String").setJMenuBar(new JMenuBar());/菜单栏放置在窗体上。
当一个构件和一个paint()方法都负责屏幕的同一部分时,总是构件获胜。
(1)创建构件。
(2)创建实现*Listener接口的收听者。
(3)构造该收听者的一个实例。
调用该构件add*Listener()方法,同时传入刚建成的收听者类的实例。
(2)创建实现*Listener接口的收听者。
(3)构造该收听者的一个实例。
调用该构件add*Listener()方法,同时传入刚建成的收听者类的实例。
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!");//在这里会出现混乱。//win!迟迟不出现。只有变化窗口的时候才会
add(ab,"South");///出现。
btn[0].setEnabled(false);
}
}
使用repaint()方法可以刷屏并调用paint()。
{
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!");//在这里会出现混乱。//win!迟迟不出现。只有变化窗口的时候才会
add(ab,"South");///出现。
btn[0].setEnabled(false);
}
}
使用repaint()方法可以刷屏并调用paint()。
当画的图形位置不对时,有可能在屏幕上显示不出来。
tf.setText("Font Color is "+ c.getItem(c.getSelectedIndex())+/此处用于返回Choice所选项。
". Font Size is " + cb[i].getLabel() );//此处用于返回checkbox所选项。
当程序启动时paint()调用。当图文框被完全覆盖时,paint()被调用,当图文框放大时,paint()被调用。被最小化再还原时调用。
//其余时间都不会调用paint()。
//其余时间都不会调用paint()。
btn[i].addActionListener(this);
btn[i].addActionListener(this);//此时进行两次调用。点一次鼠标有两次动作。
///想让一个任意的类成为一个动作收听者,光实现一个actionperformed()的方法是不够的。因为单凭这一点不能
///认为它实现了ActionListener接口。
btn[i].addActionListener(this);//此时进行两次调用。点一次鼠标有两次动作。
///想让一个任意的类成为一个动作收听者,光实现一个actionperformed()的方法是不够的。因为单凭这一点不能
///认为它实现了ActionListener接口。
///当类中函数要用到其它函数中的变量时,特别是构件要声明成类的变量而不是函数中的变量。
/publicTextPane是放在publicScrollPane上的,而publicScrollPane是放在textTabbedPane上的。
/这样使用:
publicTextPane.setEditable(false);///这个面板是否可以操作。
publicTextPane.setName("");//?似乎没有什么用。
publicScrollPane.setViewportView(publicTextPane);//让面板显示
textTabbedPane.addTab("public",publicScrollPane);//在textTabbedPane上添加滚动条。
/ frameClient.getContentPane().add(new JButton(),
BorderLayout.CENTER);/这句话用于JFrame添加控件。
BorderLayout.CENTER);/这句话用于JFrame添加控件。