java手记---swing类和awt类

 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);
 }
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)用来建标签。
  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());这里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
    textTabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);/将标签放在下部。
      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上。

在编写菜单的时候不需写setLayout(new FlowLayout());
如果在编写按钮的时候不写上面的代码,那么按钮就会变的很大。上一行代码是布局管理器。
应该始终有一个File菜单,它应该始终在菜单栏的最左边。菜单项New,Open...和Close(如果有的话)
应该按上面的次序出现。New应该是第一项,Exit应该是最后一项。
如果有Edit项的话,应该为第二项,它应该有copy,paste,cut等功能。
如果有help项的话,应该是最后一项。
如果不把菜单加到菜单栏上,那么菜单栏就不会出现。
 TextArea ta = new TextArea(10,20);/用于创建文本框。第一个参数为高度,第二个为长度。
 Scrollbar sb = new Scrollbar(Scrollbar.HORIZONTAL);用于建一个水平方向的控制条。
///有两种布局管理器:流程布局管理器和边框布局管理器。
 setLayout(new FlowLayout(FlowLayout.LEFT));这便是流程管理器
///边框管理器是add();使用边框管理器的容器只能有五个构件。
/// 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().
MenuBar mb = new MenuBar();
setMenuBar(mb);///此句用于设置菜单栏。
//new JMenu("String").add(new JMenuItem("String"));菜单添加菜单项
///new JMenuBar().add(new JMenu("String"))///菜单栏添加菜单
/// new JFrame("String").setJMenuBar(new JMenuBar());/菜单栏放置在窗体上。

当一个构件和一个paint()方法都负责屏幕的同一部分时,总是构件获胜。
(1)创建构件。
(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()。
当画的图形位置不对时,有可能在屏幕上显示不出来。

 tf.setText("Font Color is "+ c.getItem(c.getSelectedIndex())+/此处用于返回Choice所选项。
    ". Font Size is " + cb[i].getLabel() );//此处用于返回checkbox所选项。
当程序启动时paint()调用。当图文框被完全覆盖时,paint()被调用,当图文框放大时,paint()被调用。被最小化再还原时调用。
//其余时间都不会调用paint()。
 btn[i].addActionListener(this);
   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添加控件。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值