Ошибка «Неожиданный тип» - PullRequest
1 голос
/ 16 июня 2010

У меня проблема с компиляцией Java-программы:

\Desktop\Java Programming\JFrameWithPanel.java:79: unexpected type
required: variable
found   : value
            if(serviceTerms.isSelected() = false)
                                      ^
1 error

Что вызывает эту ошибку?

public class JFrameWithPanel extends JFrame implements ActionListener, ItemListener
{
    int packageIndex;
    double price;
    double[] prices = {49.99, 39.99, 34.99, 99.99};

    DecimalFormat money = new DecimalFormat("$0.00");
    JLabel priceLabel = new JLabel("Total Price: "+price);
    JButton button = new JButton("Check Price");
    JComboBox packageChoice = new JComboBox();
    JPanel pane = new JPanel();
    TextField text = new TextField(5);
    JButton accept = new JButton("Accept");
    JButton decline = new JButton("Decline");
    JCheckBox serviceTerms = new JCheckBox("I Agree to the Terms of Service.", false);
    JTextArea termsOfService = new JTextArea("This is a text area", 5, 10);


    public JFrameWithPanel()
    {
        super("JFrame with Panel");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pane.add(packageChoice);
        setContentPane(pane);
        setSize(250,250);
        setVisible(true);

        packageChoice.addItem("A+ Certification");
        packageChoice.addItem("Network+ Certification ");
        packageChoice.addItem("Security+ Certifictation");
        packageChoice.addItem("CIT Full Test Package");

        pane.add(button);
        button.addActionListener(this);

        pane.add(text);
        text.setEditable(false);
        text.setBackground(Color.WHITE);
        text.addActionListener(this);

        pane.add(termsOfService);
        termsOfService.setEditable(false);
        termsOfService.setBackground(Color.lightGray);

        pane.add(serviceTerms);
        serviceTerms.addItemListener(this);

        pane.add(accept);
        accept.addActionListener(this);

        pane.add(decline);
        decline.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e)
    {
        packageIndex = packageChoice.getSelectedIndex();
        price = prices[packageIndex];
        text.setText("$"+price);

        Object source = e.getSource();

        if(source == accept)
        {
            if(serviceTerms.isSelected() = false) // line 79
            {
                JOptionPane.showMessageDialog(null,"Please accept the terms of service.");
            }
            else
            {
                JOptionPane.showMessageDialog(null,"Thanks.");
            }
        }
    }

Ответы [ 2 ]

8 голосов
/ 16 июня 2010

У вас есть (недопустимое) назначение вместо сравнения.Конечно, вы имеете в виду:

if (serviceTerms.isSelected() == false)

Конечно, предпочтительный и более читабельный способ написать это условие:

if (!serviceTerms.isSelected()) 
4 голосов
/ 16 июня 2010

Проблема в том, что вы используете оператор присваивания =. Вам следует использовать оператор равенства ==, например:

if(serviceTerms.isSelected() == false) // line 79
{
    JOptionPane.showMessageDialog(null,"Please accept the terms of service.");
}

Или, чтобы полностью обойти эту ошибку, вы должны пропустить сравнение с false и использовать оператор ! (not), например, так.

if(!serviceTerms.isSelected()) // line 79
{
    JOptionPane.showMessageDialog(null,"Please accept the terms of service.");
}

Я чувствую, что так читается лучше.

Если нет, то выбираются условия обслуживания

Это больше похоже на предложение, чем:

Если выбран срок обслуживания, равен false

...