黑马程序员技术交流社区

标题: 用一个控件控制另一个控件的动作? [打印本页]

作者: 刘云龙    时间: 2013-1-17 12:57
标题: 用一个控件控制另一个控件的动作?

  1. import  javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;

  4. public class Test
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 new MyFrame();
  9.         }
  10. }

  11. class MyFrame
  12. {
  13.         MyFrame()
  14.         {
  15.                 JFrame f = new JFrame("MyFrame");
  16.                 f.setLayout(new BorderLayout());
  17.                 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18.                 f.setVisible(true);
  19.                 f.setBounds(120,100,200,230);

  20.                 JLabel lab = new JLabel();

  21.                 JButton btn = new JButton();
  22.                 btn.addActionListener(new ActionListener()
  23.                 {
  24.                         public void actionPerformed(ActionEvent e)
  25.                         {
  26.                                 lab.setText("success!");//这里提示:从内部类中访问局部变量 lab;需要被声明为最终类型!
  27.                                                                                 //有没有方法不设置成final类型,而用一个控件控制另一个控件的动作?
  28.                                 //System.out.println("button");
  29.                         }
  30.                 });

  31.                 f.add(lab,BorderLayout.SOUTH);
  32.                 f.add(btn,BorderLayout.EAST);
  33.         }
  34. }
复制代码

作者: yong230    时间: 2013-1-17 14:23
不知道你说的一个控件控制另一个控件的动作是什么意思?

你是想在 actionPerformed事件里用lab.setText("success!");这句修改lab标签的文字吗?

作者: yong230    时间: 2013-1-17 14:27
这样写就可以了:
mport  javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test2
{
        public static void main(String[] args)
        {
                new MyFrame();
        }
}

class MyFrame
{
            JLabel lab = new JLabel();
        MyFrame()
        {
                JFrame f = new JFrame("MyFrame");
                f.setLayout(new BorderLayout());
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
                f.setBounds(120,100,200,230);

               

                JButton btn = new JButton();
                btn.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                lab.setText("success!");//这里没有了错误提示                      }
                });

                f.add(lab,BorderLayout.SOUTH);
                f.add(btn,BorderLayout.EAST);
        }
}
作者: 刘云龙    时间: 2013-1-20 21:31
yong230 发表于 2013-1-17 14:27
这样写就可以了:
mport  javax.swing.*;
import java.awt.*;

嗯  是这样的




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