2014-12-30 2 views
1

Я написал код, который говорит вам, имеете ли вы право голосовать или нет .. но когда я скомпилировать это показывает ошибку или предупреждение сообщение говорит:Java Голосуйте Program Error

Vote.java uses unsafe or unchecked operations. Recompile with -Xlint:unchecked for details.

это мой код ..

я сделал больше исследований, но это не помогло мне ... теперь я не могу скомпилировать его

`

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

public class Vote extends JFrame { 
    JLabel ageEnquiry, result; 
    JComboBox<String> ageList; 
    JTextField results; 
    JButton val; 

    public Vote() { 

     String[] ages = new String[] {"10-17", "18-30", "31-40", "41-50", "51-60", "61-70", "71-80", "81-90", "91-100"}; 

     setLayout(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 

     ageEnquiry = new JLabel("Select your age range: "); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 0; 
     add(ageEnquiry, c); 

     ageList = new JComboBox<>(ages); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 5; 
     c.gridy = 0; 
     add(ageList, c); 

     result = new JLabel("Result: "); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 2; 
     add(result, c); 

     results = new JTextField(10); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 5; 
     c.gridy = 2; 
     add(results, c); 

     ageList.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       JComboBox<String> combo = (JComboBox<String>) event.getSource(); 
       String selectedAge = (String) combo.getSelectedItem(); 

       if(selectedAge.equals("10-17")) { 
        results.setText("Not Eligible"); 
       } else { 
        results.setText("Eligible"); 
       } 
      } 
     }); 
    } 


    public static void main(String[] args) { 
     Vote gui = new Vote(); 
     gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     gui.setVisible(true); 
     gui.setSize(400, 400); 
     gui.setTitle("Vote"); 
    } 
} 

`

, пожалуйста, помогите мне .. :(

+0

версию Java вы используете? убедитесь, что он по крайней мере java 7 –

+0

, попробуйте скомпилировать, как это было предложено: javac -Xlint: снят флажок Vote.java и опубликуйте вывод здесь – dehlen

+0

, если речь идет о предупреждениях: добавьте аннотацию SupressWarnings или исправьте предупреждения или удалите проверку предупреждений –

ответ

6

Просто скомпилируйте свой код через:

javac -Xlint:unchecked Vote.java 

Вы получите более подробную информацию о полученном вами предупреждении. Из-за этой строки появляется предупреждение.

JComboBox<String> combo = (JComboBox<String>) event.getSource(); 

Чтобы избавиться от предупреждения увидеть этот подход: Handle generics in ActionListener

Вы бы тогда должны изменить код следующим образом:

  • Создание пользовательского ActionListener
  • Используйте этот ActionListener для ваш JComboBox

ActionListener

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

class CustomActionListener implements ActionListener 
{ 
    private JComboBox<String> comboBox; 
    private JTextField textField; 
    public CustomActionListener(JComboBox<String> comboBox, JTextField textField){ 
    this.comboBox = comboBox; 
    this.textField = textField; 
    } 
    @Override 
    public void actionPerformed(ActionEvent event) 
    { 
    // Just use the comboBox 
    ComboBoxModel<String> model = comboBox.getModel(); 
    int index = comboBox.getSelectedIndex(); 
    String selectedAge = model.getElementAt(index); 
       if(selectedAge.equals("10-17")) { 
        textField.setText("Not Eligible"); 
       } else { 
        textField.setText("Eligible"); 
       } 
    } 
} 

Измененное Голосов:

ageList.addActionListener(new CustomActionListener(ageList,results));    
+0

Прошу прощения, но я не могу понять ссылку «Обрабатывать дженерики в ActionListener ..» Я имею в виду, какое улучшение я должен внести в свой код. Не могли бы вы просто показать мне переписанный код, который работает правильно? спасибо –

+0

см. мой отредактированный ответ, и если бы это помогло вам, я был бы признателен за ответ, как принято :) – dehlen

+0

и последний вопрос, связанный с этой темой .. где я должен положить этот код .. я действительно новичок .. извините задавать такие глупые вопросы .. еще раз спасибо –