当前位置: 首页 > 知识库问答 >
问题:

获取编译器错误:警告:[未选中]未选中将addItem(E)作为原始类型JComboBox的成员调用

段干靖
2023-03-14

我正在Netbeans IDE 8.2中制作一个商店,由于这个错误,我无法编译。我试着通过添加JComboBox来修复它,但是它没有解决我的问题。这个应用程序的网页版运行良好,但我无法编译它。当使用Xlint:Unchecked运行时,这是一个警告:[unchecked]作为原始类型JComboBox list.addItem(s)的成员对addItem(E)的未检查调用;其中E是一个类型变量:E扩展了JComboBox 1警告类中声明的对象

package warstwa_klienta_desktop;

import java.awt.Dimension;
import java.util.ArrayList;

import java.util.Iterator;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.AbstractTableModel;

public class Produkty_form extends JPanel  {
private JTable tabela_produktow;    
MyTableModel model;         
JComboBox<String> lista_produktow;      

public void init() {
    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    model = new MyTableModel(); 
    tabela_produktow = new JTable(model);   
    table_content();
                   
    tabela_produktow.setPreferredScrollableViewportSize(new Dimension(800, 100));
    tabela_produktow.setFillsViewportHeight(true);
    tabela_produktow.getSelectionModel().addListSelectionListener(new RowListener());                                        
    add(new JScrollPane(tabela_produktow));                      
    JLabel lprodukty = new JLabel("Produkty");
    add(lprodukty);
    JComboBox<String>lista_produktow = new JComboBox<>();
    add(lista_produktow);
}

void table_content() {              
    ArrayList<ArrayList<String>> produkty = GUI_main.getFacade().items();
    model.setData(produkty);
    tabela_produktow.repaint();
}

private void list_content(ArrayList<ArrayList<String>> col, JComboBox list)  {
    
    ArrayList<String> s;                
    list.removeAllItems();
    Iterator<ArrayList<String>> iterator = col.iterator();
    while (iterator.hasNext()) {
        s = iterator.next();
        list.addItem(s);
    }
}

void print_produkty() {     
    ArrayList<ArrayList<String>> help3 = GUI_main.getFacade().items();             
    if (help3 != null) {
        list_content(help3, lista_produktow);                     
    }
}

private class RowListener implements ListSelectionListener {        

    @Override
    public void valueChanged(ListSelectionEvent event) {        
        if (event.getValueIsAdjusting()) {          
            return;
        }
        print_produkty();       
    }
}

class MyTableModel extends AbstractTableModel { 

    private final String[] columnNames = {"Id produktu", "Nazwa", "Cena", 
        "Promocja", "Data", "Cena brutto"};
    private ArrayList<ArrayList<String>> data;  

    public void setData(ArrayList<ArrayList<String>> val) {             
        data = val;
    }

    @Override
    public int getColumnCount() {
        return columnNames.length;              
    }

    @Override
    public int getRowCount() {
        return data.size();                 
    }

    @Override
    public String getColumnName(int col) {
        return columnNames[col];
    }

    @Override
    public Object getValueAt(int row, int col) {
        return data.get(row).get(col);      
    }
    
}

}

共有1个答案

齐昊苍
2023-03-14

GUI_ main看起来像这样

package warstwa_klienta_desktop;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.ejb.EJB;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import warstwa_biznesowa_ejb.Fasada_warstwy_biznesowej_ejbRemote;

public class GUI_main implements ActionListener {

    @EJB
    private static Fasada_warstwy_biznesowej_ejbRemote fasada;

    static JPanel cards;    

    static CardLayout cl;   

       
    static Pusty_form card0 = new Pusty_form();     
    static Produkt_form card1 = new Produkt_form(); 
    static Produkty_form card2 = new Produkty_form();

    final static String PUSTY = "Pusty";
    final static String PRODUKT = "Produkt form";
    final static String PRODUKTY = "Produkty form";

    
  

    static public Fasada_warstwy_biznesowej_ejbRemote getFacade() {
        return fasada;
    }

    public JMenuBar createMenuBar() {
        JMenuBar menuBar;
        JMenu menu, submenu;
        JMenuItem menuItem;

        menuBar = new JMenuBar();           

        menu = new JMenu("A Menu");
        menu.setMnemonic(KeyEvent.VK_A);            
        menuBar.add(menu);              

        menuItem = new JMenuItem(PRODUKT, KeyEvent.VK_P);   
        menuItem.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_1, ActionEvent.ALT_MASK));  
        menuItem.addActionListener(this);           
        menu.add(menuItem);             
        menuItem = new JMenuItem(PRODUKTY);
        menuItem.setMnemonic(KeyEvent.VK_R);  
        menuItem.addActionListener(this);       
        menu.add(menuItem);             
        menuItem = new JMenuItem(PUSTY);
        menuItem.setMnemonic(KeyEvent.VK_U);    
        menuItem.addActionListener(this);       
        menu.add(menuItem);         
        menu.addSeparator();

        submenu = new JMenu("A submenu");       
        submenu.setMnemonic(KeyEvent.VK_A); 

        menuItem = new JMenuItem(PUSTY);
        menuItem.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_2, ActionEvent.ALT_MASK));  
        menuItem.addActionListener(this);       
        submenu.add(menuItem);      

        menuItem = new JMenuItem(PUSTY);
        menuItem.setMnemonic(KeyEvent.VK_S);    
        menuItem.addActionListener(this);       
        submenu.add(menuItem);      

        menu.add(submenu);             

        menu = new JMenu("Inne Menu");          
        menu.setMnemonic(KeyEvent.VK_I);        
        menuBar.add(menu);          

        return menuBar;         
    }

    public Container createContentPane() {

       
        card1.init();

        card2.init();

        cards = new JPanel(new CardLayout());
        cards.add(card0, PUSTY);        
        cards.add(card1, PRODUKT);      
        cards.add(card2, PRODUKTY); 

        JPanel p1 = new JPanel();       
        p1.add(cards, BorderLayout.CENTER); 
        return p1;          
    }

    public static void updateProdukty_form() {
        card2.table_content();      
       
        cl.show(cards, PRODUKTY);   

    }

    @Override
    public void actionPerformed(ActionEvent e) {

        JMenuItem source = (JMenuItem) (e.getSource());     
        //   CardLayout cl = (CardLayout) (cards.getLayout());
        cl = (CardLayout) (cards.getLayout());
        switch (source.getText()) {
            case PRODUKT:
                cl.show(cards, PRODUKT);    
                break;
            case PRODUKTY:
                updateProdukty_form();  
                break;
            case PUSTY:
                cl.show(cards, PUSTY);      
                break;
            default:
                break;
        }
    }

    private static void createAndShowGUI() {        
        JFrame frame = new JFrame("MenuDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(900, 400);
        GUI_main demo = new GUI_main();
        frame.setJMenuBar(demo.createMenuBar());    
        frame.setContentPane(demo.createContentPane());
        frame.setVisible(true);         

    }
      public static void main(String[] args) {
     

        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }

}
 类似资料:
  • 我一直在复制向日葵android架构最佳实践应用程序,到目前为止速度很慢但很成功,虽然我的代码正常工作,但它显示了一条未经检查的消息,所以我运行了它要求的命令,它说: [unchecked]未选中对作为原始类型ListAdapter成员的submitList(List)的调用,其中T是类型变量:T扩展类ListAdapper中声明的对象 这可能是不重要的,但它是烦人的我,一个我用作参考从来没有任何

  • 问题内容: 令人反感的代码 错误: 不确定这样的错误需要多少信息。 问题答案: 问题在于上面的代码没有使用泛型。 以下将起作用: (如果为,则为要保存的元素的type参数)内部的类型名称告诉编译器应期望的对象类型。 如果尝试添加一个指定类型的对象(例如,在这种情况下,尝试添加和),则会发生编译时错误,这表明正在使用一种非预期类型的​​对象添加。 就是说,应该尽量不要使用该类。为了更多的目的,例如从

  • 我在应用程序启动时从数据库中检索一些默认值,并使用它来设置活动中微调器项的选定值。 代码工作正常,但问题是我在Android Studio中收到一个警告,警告对a.getPosition调用中作为原始类型“android.widget.ArrayAdapter”成员的“getposition(T)”的未检查调用。 我很高兴它的工作,但新的Android和Java我想了解和消除尽可能多的警告,从我的

  • 问题内容: 我的代码如下 “ try”块中的分配会导致警告说明 为什么是这样? 问题答案: 好吧,首先让我们弄清楚问题出在哪里-它在演员表中。这是一个简短的示例: 这仍然有同样的问题。问题在于强制类型转换实际上不会测试任何东西- 因为强制类型转换将有效地转换为原始类型。因为这有点让人惊讶,因为实际上对象 确实 知道所涉及的类,但是考虑类似的情况: 该类型转换将不会检查它是否 确实 是a ,因为该信

  • 我正在关注Udacity上的Google Android教程,但在指定的代码中,我收到以下警告: 对“execute”的未检查调用(参数...)”作为原始类型“android.os.AsyncTask”的成员 关于此代码: 做某事任务: 任何人都可以解释这个警告以及如何解决它?它似乎应该按照说明工作...

  • 奇怪的情况-下面是代码: 构建项目时(在项目属性中使用编译器选项Xlint:unchecked),我得到一个警告: 警告:[未选中]未选中的强制转换 ArrayList list=(ArrayList)obj[1]; 必需:ArrayList 找到:对象 但用同样的方法来浇铸字符串是可以的。这里有什么问题?