为什么label不会变色呢
import java.awt.*;import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Work4 extends JFrame implements ActionListener{
private JButton btn1,btn2,btn3;
private JLabel lbl;
private Container cp;
private GridLayout layout;
public Work4(){
super("bianselong");
setSize(200,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btn1=new JButton("红色");
btn2=new JButton("黄色");
btn3=new JButton("兰色");
lbl=new JLabel("the color will be changed");
cp=getContentPane();
layout=new GridLayout(3,1,6,6);
cp.setLayout(layout);
cp.add(btn1);
cp.add(btn2);
cp.add(btn3);
cp.add(lbl);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==btn1)
{
lbl.setBackground(Color.red);
lbl.setText("红色");}
else if(e.getSource()==btn2)
{lbl.setText("黄色");
lbl.setBackground(Color.yellow);}
else {lbl.setText("兰色");
lbl.setBackground(Color.blue);}
}
public static void main(String[] args){
Work4 work =new Work4();
work.setVisible(true);
}
} 而且输出也不事按照Grid 布局输出得 如果把这个程序改成 Frame 得而步是 JFrame 得就可以变色
[此贴子已经被作者于2006-3-31 14:27:33编辑过]
----------------解决方案--------------------------------------------------------
work 好像还有个 pack() 方法, 记不清了。。
你自己找一下。
----------------解决方案--------------------------------------------------------
哪个不是紧凑布局吗
----------------解决方案--------------------------------------------------------
哦 忘了。
还有一个 是 显示背景色。。。
----------------解决方案--------------------------------------------------------
setOpaque(true);
是这个。
----------------解决方案--------------------------------------------------------
能说清楚点吗 我把JFrame 得容器改成了 Frame 就可以看了
----------------解决方案--------------------------------------------------------
不行啊 没有这个方法啊
----------------解决方案--------------------------------------------------------
setOpaque
public void setOpaque(boolean isOpaque)
- 如果为 true,则该组件绘制其边界内的所有像素。否则该组件可能不绘制其某些或所有像素,从而允许其下面的像素透视出来。
对于
JComponent
而言,此属性的默认值是 false。但是对于大多数标准的JComponent
子类(如JButton
和JTree
),此属性的默认值是和外观相关的。- 参数:
isOpaque
- 如果此组件应该是透明的,则为 true- 另请参见:
isOpaque()
lbl.setOpaque(true);
----------------解决方案--------------------------------------------------------
谢谢了 成了
----------------解决方案--------------------------------------------------------