黑马程序员技术交流社区

标题: GUI中button的问题 [打印本页]

作者: 759345779    时间: 2014-4-4 19:04
标题: GUI中button的问题
本帖最后由 759345779 于 2014-4-4 21:36 编辑
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. class  FrameDemo
  4. {
  5.         //定义该图形中所需的组件的引用。
  6.         private Frame f;
  7.         private Button but;
  8.         
  9.         FrameDemo()
  10.         {
  11.                 init();
  12.         }
  13.         public void init()
  14.         {
  15.                 f = new Frame("my frame");
  16.                 //对frame进行基本设置。
  17.                 f.setBounds(300,100,300,200);
  18.                 f.setLayout(new FlowLayout());
  19.                 but = new Button("my button");
  20.                 //将组件添加到frame中
  21.                 f.add(but);
  22.                 //加载一下窗体上事件。
  23.                 myEvent();
  24.                 //显示窗体;
  25.                 f.setVisible(true);
  26.         }
  27.         private void myEvent()
  28.         {
  29.                 f.addWindowListener(new WindowAdapter()
  30.                 {
  31.                         public void windowClosing(WindowEvent e)
  32.                         {
  33.                                 System.exit(0);
  34.                         }
  35.                 });

  36.                 but.addActionListener(new ActionListener()
  37.                 {
  38.                         private int count = 1;
  39.                         public void actionPerformed(ActionEvent e)
  40.                         {
  41.                                 Button b = (Button)e.getSource();
  42.                                 
  43.                                 Frame f1 = (Frame)b.getParent();
  44.                                 
  45.                                 f1.add(new Button("button-"+count++));
  46.                                 f1.validate();


  47.                         }
  48.                 });
  49.         }



  50.         public static void main(String[] args)
  51.         {
  52.                 new FrameDemo();
  53.         }
  54. }
复制代码

这段代码执行结果是按钮按一次创建一个新按钮,我想把它改写成按钮点击一次按钮的label直接显示点击的次数,并且点击次数不断累加,怎么搞  ,给点建议。。。。。
作者: 闲人    时间: 2014-4-4 19:26
把new分开写,不然循环一次就new一个,先创建,然后再去执行累加
作者: Engle    时间: 2014-4-4 19:35
你的代码逻辑有问题,你代码是每点一次按钮就新建一个按钮,你应该怎么写:
package com.itheima;
import java.awt.*;
import java.awt.event.*;
class  FrameDemo
{
        //定义该图形中所需的组件的引用。
        private Frame f;
        private Button but;
        
        FrameDemo()
        {
                init();
        }
        public void init()
        {
                f = new Frame("my frame");
                //对frame进行基本设置。
                f.setBounds(300,100,300,200);
                f.setLayout(new FlowLayout());
                but = new Button("my button");
                //将组件添加到frame中
                f.add(but);
                //加载一下窗体上事件。
                myEvent();
                //显示窗体;
                f.setVisible(true);
        }
        private void myEvent()
        {
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                        }
                });

                but.addActionListener(new ActionListener()
                {
                        private int count = 1;
                        public void actionPerformed(ActionEvent e)
                        {
                                Button b = (Button)e.getSource();
                                
                               b.setLabel(""+count++);//设置button的label
//                                Frame f1 = (Frame)b.getParent();
//                                f1.add(new Button("button-"+count++));
//                                f1.validate();


                        }
                });
        }



        public static void main(String[] args)
        {
                new FrameDemo();
        }
}

你只需要写上我标红的代码就可以了!
作者: ╰青青子佩ˊゝ    时间: 2014-4-4 19:41
本帖最后由 ╰青青子佩ˊゝ 于 2014-4-4 19:54 编辑

增加but.setLabel()和注释掉了一些代码,如下面代码所示,希望能帮到你。
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. class  FrameDemo
  4. {
  5.         //定义该图形中所需的组件的引用。
  6.         private Frame f;
  7.         private Button but;
  8.         FrameDemo()
  9.         {
  10.                 init();
  11.         }
  12.         public void init()
  13.         {
  14.                 f = new Frame("my frame");
  15.                 //对frame进行基本设置。
  16.                 f.setBounds(300,100,600,300);//(300,100,300,200)
  17.                 f.setLayout(new FlowLayout());
  18.                 but = new Button("my button");
  19.                 //将组件添加到frame中
  20.                 f.add(but);
  21.                 //加载一下窗体上事件。
  22.         
  23.                 myEvent();
  24.                 //显示窗体;
  25.                 f.setVisible(true);
  26.         }
  27.         private void myEvent()
  28.         {
  29.                 f.addWindowListener(new WindowAdapter()
  30.                 {
  31.                         public void windowClosing(WindowEvent e)
  32.                         {
  33.                                 System.exit(0);
  34.                         }
  35.                 });

  36.                 but.addActionListener(new ActionListener()
  37.                 {
  38.                         private int count = 1;
  39.                         public void actionPerformed(ActionEvent e)
  40.                         {
  41.                            //     Button b = (Button)e.getSource();
  42.                                 
  43.                            //     Frame f1 = (Frame)b.getParent();
  44.                                 
  45.                           //      f1.add(new Button("button-"+count++));
  46.                           //      f1.validate();

  47.                                         //1.给but的label设置文本内容                                       
  48.                                         but.setLabel("鼠标第"+(count++)+"次点击button");

  49.                         }
  50.                 });
  51.         }
  52.         public static void main(String[] args)
  53.         {
  54.                 new FrameDemo();
  55.         }
  56. }
复制代码







作者: ╰青青子佩ˊゝ    时间: 2014-4-4 19:56
好吧,跟藤椅的代码一样的。额。当我没写吧。
作者: 759345779    时间: 2014-4-4 21:01
Engle 发表于 2014-4-4 19:35
你的代码逻辑有问题,你代码是每点一次按钮就新建一个按钮,你应该怎么写:
package com.itheima;
import j ...

谢谢  太好了
作者: 759345779    时间: 2014-4-4 21:03
╰青青子佩ˊゝ 发表于 2014-4-4 19:41
增加but.setLabel()和注释掉了一些代码,如下面代码所示,希望能帮到你。

谢谢你了额




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2