【问题标题】:label.setText is not workinglabel.setText 不工作
【发布时间】:2015-09-15 12:50:05
【问题描述】:

我有这个程序应该替换标签 "MALE""FEMALE" 取决于选择器选择,但是当我尝试运行它时 "setText" 不起作用。

    `import java.awt.*;
     import java.awt.event.*;
     import javax.swing.*;

     public class Hue implements ItemListener
    {
JFrame frame= new JFrame("Demo");
Container content;
JPanel panel= new JPanel();
JLabel label = new JLabel("[LABEL]");
JCheckBox box= new JCheckBox("With Gender");
JRadioButton male= new JRadioButton("Male");
JRadioButton female= new JRadioButton("Female");
ButtonGroup bg = new ButtonGroup();
JTextField field = new JTextField(100);

public void launchFrame()
{
    panel.add(label);
    panel.add(box);


    panel.add(male);
    panel.add(female);
    bg.add(male);
    bg.add(female);

    box.addItemListener(this);
    male.addItemListener(this);
    female.addItemListener(this);

    panel.add(field);

    panel.setLayout(null);
    label.setBounds(5,0, 100, 20);
    box.setBounds(10,15, 100, 20);
    male.setBounds(20, 35, 100, 20);
    female.setBounds(20, 55, 100, 20);
    field.setBounds(15, 80, 250, 100);
    field.setHorizontalAlignment(JTextField.LEFT);

    male.setEnabled(false);
    female.setEnabled(false);
    field.setEnabled(false);

    content= frame.getContentPane();
    content.add(panel, BorderLayout.CENTER);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.setSize(300,300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void itemStateChanged(ItemEvent e)
{
    if (e.getItem() == box)
    {
        if (!box.isSelected())
        {
            male.setEnabled(false);
            female.setEnabled(false);
            field.setEnabled(false);
        } 

        else if (box.isSelected())
        {
            male.setEnabled(true);
            female.setEnabled(true);
            field.setEnabled(true);
            {
                if (e.getItem() == male) 
                {
                    label.setText("Male");
                }

                else if (e.getItem() == female)
                {
                    label.setText("Female");
                }
            }
        }   

    }
}

public static void main(String args[])
{
    Hue hw= new Hue();
    hw.launchFrame();

}

}`

【问题讨论】:

  • 看起来有点疯狂,e.getItem() == box 那么 e.getItem() == male 怎么可能呢?

标签: java user-interface label settext


【解决方案1】:
 public void itemStateChanged(ItemEvent e)
 {
    if (e.getItem() == box)
    {
        if (!box.isSelected())
        {
            male.setEnabled(false);
            female.setEnabled(false);
            field.setEnabled(false);
        } 

        else if (box.isSelected())
        {
            male.setEnabled(true);
            female.setEnabled(true);
            field.setEnabled(true);
        }   
    }
    else if (e.getItem() == male) 
    {
         label.setText("Male");
    }
    else if (e.getItem() == female)
    {
       label.setText("Female");
    }
}

根据您的代码if (e.getItem() == box) 然后永远不会发生if (e.getItem() == male)if (e.getItem() == female)

【讨论】:

    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2021-01-10
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    相关资源
    最近更新 更多