当前位置: 代码迷 >> Java相关 >> 不能正确的改变颜色.
  详细解决方案

不能正确的改变颜色.

热度:217   发布时间:2007-06-09 18:43:16.0
不能正确的改变颜色.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FrameTest extends JFrame implements ActionListener
{
JButton bt1=new JButton("红色");
JButton bt=new JButton("1234567");
JButton bt2=new JButton("绿色");
FrameTest()
{
setTitle("单击事件");
setSize(300,300);
setBackground(Color.white);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
JPanel pan=new JPanel();
pan.setLayout(new FlowLayout());
bt1.addActionListener(this);
bt2.addActionListener(this);
pan.add(bt);
pan.add(bt1);
pan.add(bt2);
setContentPane(pan);
setVisible(true);
}
public static void main(String args[])
{
JFrame frame=new FrameTest();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==bt1)
setBackground(Color.red);
if(e.getSource()==bt2)
setBackground(Color.cyan);
}
}
为什么我点下bt1或bt2,颜色一闪而过,并不能改变啊,是怎么回事?
搜索更多相关的解决方案: 颜色  

----------------解决方案--------------------------------------------------------
你改变的是Frame的颜色,而我们看到的是Pnael,所以你应该改变的是Pnael的颜色。
程序代码:
package test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FrameTest extends JFrame implements ActionListener
{
JButton bt1=new JButton(\"红色\");
JButton bt=new JButton(\"1234567\");
JButton bt2=new JButton(\"绿色\");
JPanel pan;
FrameTest()
{
setTitle(\"单击事件\");
setSize(300,300);
setBackground(Color.white);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
pan=new JPanel();
pan.setLayout(new FlowLayout());
bt1.addActionListener(this);
bt2.addActionListener(this);
pan.add(bt);
pan.add(bt1);
pan.add(bt2);
setContentPane(pan);
setVisible(true);
}
public static void main(String args[])
{
JFrame frame=new FrameTest();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==bt1)
pan.setBackground(Color.red);
if(e.getSource()==bt2)
pan.setBackground(Color.cyan);
}
}

----------------解决方案--------------------------------------------------------
以下是引用pity1115在2007-6-9 18:52:02的发言:
你改变的是Frame的颜色,而我们看到的是Pnael,所以你应该改变的是Pnael的颜色。
程序代码:
package test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FrameTest extends JFrame implements ActionListener
{
JButton bt1=new JButton(\"红色\");
JButton bt=new JButton(\"1234567\");
JButton bt2=new JButton(\"绿色\");
JPanel pan;
FrameTest()
{
setTitle(\"单击事件\");
setSize(300,300);
setBackground(Color.white);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
pan=new JPanel();
pan.setLayout(new FlowLayout());
bt1.addActionListener(this);
bt2.addActionListener(this);
pan.add(bt);
pan.add(bt1);
pan.add(bt2);
setContentPane(pan);
setVisible(true);
}
public static void main(String args[])
{
JFrame frame=new FrameTest();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==bt1) //按你这样写
pan.setBackground(Color.red); //这里会出现不能认识的对象
if(e.getSource()==bt2)
pan.setBackground(Color.cyan); //这里也是一样.
}
}


----------------解决方案--------------------------------------------------------
你没看到我把pan定义在构造方法外面了吗?
----------------解决方案--------------------------------------------------------
哦.没注意,不好意思.谢谢~~~~
----------------解决方案--------------------------------------------------------

  相关解决方案