Вопрос по java – Ошибка непроверенных или небезопасных операций в Java-компиляции?

9

Я выполняю лабораторное задание для школы и получаю эту ошибку при компиляции. Программа работает нормально, хотелось бы исправить причину ошибки. Код программы и полная ошибка ниже. Спасибо как всегда!

Ошибка: Примечание: F: \ Java \ Lab 8 \ Lab8.java использует непроверенные или небезопасные операции. Примечание: Перекомпилируйте с -Xlint: не проверено для деталей.

Код:

<code>   import java.awt.*;
   import java.awt.event.*;
   import javax.swing.*;
   import javax.swing.event.*;
   import javax.swing.border.*;


   public class Lab8 extends JFrame {
       public Lab8()
           {

           // Create an array of Strings for age ranges
           String[] ageRanges = {"Under 20", "20-29", "30-39", "40-49", "50-59", "60 and Above"};
           JComboBox jcbo = new JComboBox(ageRanges);

           // Create an array of String destinations
           String[] destination = {"Mercury", "Venus", "Moon", "Mars", "Jupiter / Europa", "Saturn / Triton", "Pluto + Sharon"};
           JList jlst = new JList();

           // Declare radio buttons
           JRadioButton jrbMonday, jrbTuesday, jrbWednesday, jrbThursday, jrbFriday;

           // Create a textfield
           JTextField jMsg = new JTextField(10);


           // Create panel to hold label and textbox.
           JPanel p1 = new JPanel();
           p1.setLayout(new BorderLayout(5,0));
           p1.add(new JLabel("Name: "), BorderLayout.WEST);
           p1.add(new JTextField(20), BorderLayout.CENTER);
           jMsg.setHorizontalAlignment(JTextField.LEFT);


           // Create combobox panel.
           JPanel p2 = new JPanel();
           p2.setLayout(new GridLayout(2,0,5,5));
           p2.add(p1, BorderLayout.NORTH);
           p2.add(new JComboBox(ageRanges), BorderLayout.CENTER);
               p2.setBorder(new TitledBorder("Passenger Name & Age Range"));


           //Create listbox panel.
           JPanel p3 = new JPanel();
           p3.setLayout(new GridLayout(1, 0));
           p3.add(new JList(destination));
               p3.setBorder(new TitledBorder("Destinations"));


           // Create a new panel to hold radio buttons.
               JPanel r1 = new JPanel();
           r1.setLayout(new GridLayout(3,2));
           r1.add(jrbMonday = new JRadioButton("Monday"));
           r1.add(jrbTuesday = new JRadioButton("Tuesday"));
           r1.add(jrbWednesday = new JRadioButton("Wednesday"));
           r1.add(jrbThursday = new JRadioButton("Thursday"));
           r1.add(jrbFriday = new JRadioButton("Friday"));
           r1.setBorder(new TitledBorder("Departure Days"));


           // Create a radio button group to group five buttons
           ButtonGroup group = new ButtonGroup();
           group.add(jrbMonday);
           group.add(jrbTuesday);
           group.add(jrbWednesday);
           group.add(jrbThursday);
           group.add(jrbFriday);


           // Create grid to hold contents
           JPanel pMain = new JPanel();
           pMain.setLayout(new BorderLayout(5,0));
           add(r1, BorderLayout.CENTER);
           add(p2, BorderLayout.NORTH);
           add(p3, BorderLayout. EAST);

}


public static void main(String[] args)
       {
           Lab8 frame = new Lab8();
           frame.pack();
           frame.setTitle("Lab 8 Application");
           frame.setLocationRelativeTo(null); // Center the frame
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           frame.setSize(425, 275);
           frame.setVisible(true);
        }
}
</code>
Хорошо, вы пытались следовать инструкциям компилятора? & quot; Перекомпилировать с -Xlint: снят для подробностей & quot ;. Jon Skeet
Если вы заинтересованы в дальнейшем улучшении, вы можете создать перечисление с днями недели, поместить все JRadioButton в массив и использовать индексы перечисления для доступа к значениям этого массива. Vadim Ponomarev

Ваш Ответ

2   ответа
0

String & gt; для JComboBox и JList.

PS: используйте IDE с подсветкой синтаксиса. Например -JetBrains IDEA иметь бесплатную версию сообщества.

13

что компилятор Java обнаружил некоторые потенциально небезопасные проблемы с вашим кодом и предупреждает вас. Эти проблемы, как правило, очень тривиальны, и вы можете продолжить их; тем более что это школьная работа. Но чтобы найти проблемы, вы должны снова скомпилировать:javac -Xlint:unchecked Lab8.java как говорит компилятор.

Проблемы в этом файле заключаются в том, что вы не указали тип объекта, с которым имеют дело JComboBox и JList. Поскольку вы имеете дело только со строками в JComboBox и JList, вы должны указать это. Следить за публикациямиДженерики Java а такжеэтот для дополнительной информации.

+ Изменить

String[] ageRanges = {"Under 20", "20-29", "30-39", "40-49", "50-59", "60 and Above"};
JComboBox jcbo = new JComboBox(ageRanges);

в

String[] ageRanges = {"Under 20", "20-29", "30-39", "40-49", "50-59", "60 and Above"};
JComboBox<String> jcbo = new JComboBox<String>(ageRanges);

Также измените:

p2.add(new JComboBox(ageRanges), BorderLayout.CENTER);
p2.setBorder(new TitledBorder("Passenger Name & Age Range"));

в

p2.add(new JComboBox<String>(ageRanges), BorderLayout.CENTER);
p2.setBorder(new TitledBorder("Passenger Name & Age Range"));

Наконец изменить

//Create listbox panel.
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(1, 0));
p3.add(new JList(destination));

в

//Create listbox panel.
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(1, 0));
p3.add(new JList<String>(destination));

Редактировать:

Не рекомендуется для производственного кода, но для обхода этих предупреждений используйте:

@SuppressWarnings("unchecked") 

Просто добавьте это выше любого метода, который делает небезопасные операции. Например, я думаю, что вы можете поместить его выше основного метода в этом коде так:

@SuppressWarnings("unchecked") 
public static void main(String[] args) {
...

Это подавит предупреждения.

Ты просто класс! Спасибо за помощь! Kevin Schultz

Похожие вопросы