加入语句判断当文本框为空时单选按钮设置为不可用

来源:百度知道 编辑:UC知道 时间:2024/05/17 22:15:17
import java .awt.*;
import java.awt.event.*;
public class E1 extends Frame implements ItemListener
{
static E1 frm=new E1();
static TextArea area=new TextArea(6,30);
static Checkbox radio[]=new Checkbox[5];
static Label l=new Label("输入十进制数");
static TextField TF=new TextField(6);
public static void main(String args[])
{
String Item[]={"2进制","8进制","16进制","10进制"};
frm.setLayout(new FlowLayout());
frm.setSize(300,300);
frm.setTitle("进制转换");
frm.add(l);
frm.add(TF);
frm.add(area);
CheckboxGroup cbGroup=new CheckboxGroup();
frm.add(new Label("请选择进制:"));
for(int i=0;i<4;i++)
{
radio[i]=new Checkbox(Item[i],cbGroup,false);
frm.add(radio[i]);
radio[i].addItemListener(frm);
}
frm.setVisible(true);
}
public void itemStateChanged(ItemEvent e)

TF.addTextListener(new TextListener() {

@Override
public void textValueChanged(TextEvent e) {
boolean hasText = TF.getText().trim().length() != 0;
for (Checkbox check : radio) {
check.setEnabled(hasText);
}
}

});

加上这些代码就可以满足你的要求了~
另外,说几句在修改你的程序时所想到的
1.我改的还不完善,就是一开始textfield是空的,所以还要加几句话,就是一开始设置checkbox的enable为false
2.Checkbox radio[]=new Checkbox[5]; 这里的数组元素是5,而实际只有4个选项框,以后写for循环的时候容易产生空指针异常,可以改一下
3.程序本身的功能方面。比如我先输入了1,点击了2进制,于是显示了二进制的1.然后我把1改成了2,我还想得到2的二进制,那就不行了。因为这时候选项已经在二进制上,我必须先点8进制,在点回二进制才行。我觉得应该搞一个button,通过监听button的事件来转换进制。
4.如果没有特别的要求,还是用swing比较好吧,awt毕竟功能有限
5.全部大写通常用于常量,textfield的实例不建议这么命名。。