按钮ActionPerfomed将字符串从JList移动​​到JList

时间:2016-01-09 20:10:35

标签: java swing compiler-errors jlist cannot-find-symbol

我正在为我想参加的计划进行评估。我仍然对如何解释,理解或正确使用"教程"位于Tutorials Point,由该计划提供。

使用Netbeans 8.1创建的Jlist - > JFrame表单GUI生成器

public class Window extends javax.swing.JFrame {

/**
 * Creates new form for BootcampAssessmentGui
 */
public Window() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    controlsbuttonGroup = new javax.swing.ButtonGroup();
    partsScrollPane = new javax.swing.JScrollPane();
    partsList = new javax.swing.JList<>();
    buildScrollPane = new javax.swing.JScrollPane();
    buildList = new javax.swing.JList<>();
    addButton = new javax.swing.JButton();
    removeButton = new javax.swing.JButton();
    jMenuBar1 = new javax.swing.JMenuBar();
    fileMenu = new javax.swing.JMenu();
    loadMenuItem = new javax.swing.JMenuItem();
    saveMenuItem = new javax.swing.JMenuItem();
    exitMenuItem = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Devereaux Assessment");

    partsList.setModel(new javax.swing.AbstractListModel<String>() {
        String[] strings = { "Case", "Motherboard", "CPU", "RAM", "GPU", "HDD", "PSU" };
        public int getSize() { return strings.length; }
        public String getElementAt(int i) { return strings[i]; }
    });
    partsScrollPane.setViewportView(partsList);

    buildScrollPane.setViewportView(buildList);

    addButton.setText(">>");
    addButton.setToolTipText("Add Parts to Build list");
    controlsbuttonGroup.add(addButton);
    addButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            addButtonActionPerformed(evt);
        }
    });

    removeButton.setText("<<");
    removeButton.setToolTipText("Remove Parts from Build list");
    controlsbuttonGroup.add(removeButton);
    removeButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            removeButtonActionPerformed(evt);
        }
    });

    fileMenu.setText("File");

    loadMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK));
    loadMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/cooksys/assessment/arrow95.png"))); // NOI18N
    loadMenuItem.setText("Load");
    fileMenu.add(loadMenuItem);

    saveMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
    saveMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/cooksys/assessment/floppy13.png"))); // NOI18N
    saveMenuItem.setText("Save");
    fileMenu.add(saveMenuItem);

    exitMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
    exitMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/cooksys/assessment/exit18.png"))); // NOI18N
    exitMenuItem.setText("Exit");
    exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            exitMenuItemActionPerformed(evt);
        }
    });
    fileMenu.add(exitMenuItem);

    jMenuBar1.add(fileMenu);

    setJMenuBar(jMenuBar1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(partsScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 209, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(addButton)
                .addComponent(removeButton))
            .addGap(28, 28, 28)
            .addComponent(buildScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 209, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap())
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(buildScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 279, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(partsScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 279, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGroup(layout.createSequentialGroup()
                    .addGap(125, 125, 125)
                    .addComponent(addButton)
                    .addGap(18, 18, 18)
                    .addComponent(removeButton)))
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );

    pack();
}// </editor-fold>                        

private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {                                             
    System.exit(0);
}                                            

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // add Parts to buildList
  for (Object selectedValue : partsList.getSelectedValuesList()) {
      buildList.addElement(selectedValue);
      partsList.removeElement(selectedValue);
      int  iSelected = partsList.getSelectedIndex();
      if (iSelected == -1) {
          return;
      }
    }
}                                         

private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    // remove Parts from buildList
    for (Object selectedValue : buildList.getSelectedValuesList()) {
      partsList.addElement(selectedValue);
      buildList.removeElement(selectedValue);
      int  iSelected = buildList.getSelectedIndex();
      if (iSelected == -1) {
          return;
      }
    }
}                                            

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(Window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(Window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(Window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Window().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton addButton;
private javax.swing.JList<String> buildList;
private javax.swing.JScrollPane buildScrollPane;
private javax.swing.ButtonGroup controlsbuttonGroup;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JMenu fileMenu;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem loadMenuItem;
private javax.swing.JList<String> partsList;
private javax.swing.JScrollPane partsScrollPane;
private javax.swing.JButton removeButton;
private javax.swing.JMenuItem saveMenuItem;
// End of variables declaration                   
}

我收到错误无法找到符号 - 符号:方法addElement(Object) location:变量partsList类型的Jlist

错误对我来说非常简单。我的问题是我见过的大多数使用DefaultListModel的例子。 NetBeans正在使用AbstractListModel方法。

我已阅读以下参考资料:

http://www.java2s.com/Code/Java/Swing-JFC/DualJListwithbuttonsinbetween.htm http://docs.oracle.com/javase/tutorial/uiswing/components/list.html#scrollingapi

但老实说,我觉得我没有正确理解这些来源如何用于调试。我觉得我没有正确使用对象 - &gt;基于这段代码的字符串:

 private void clearDestinationSelected() {
Object selected[] = destList.getSelectedValues();
for (int i = selected.length - 1; i >= 0; --i) {
  destListModel.removeElement(selected[i]);
}
destList.getSelectionModel().clearSelection();

}

我将通过评论在代码中包含此协助请求。我不是骗子。我已经查看,工作,搜索并思考了几天。在这一点上,我觉得寻求帮助是谨慎的。

1 个答案:

答案 0 :(得分:2)

API会在这里帮助你,因为如果你看看JList API,你会看到你的编译器是正确的,JList没有addElement(...)方法,但不要丢心 - - DefaultListModel类确实具有此方法,您可以通过调用getModel()从JList中提取此方法,然后在提取的模型上调用addElement(...)

编辑:不好,你使用自己的AbstractListModel派生的模型 - 你需要让你的模型非抽象 - 给它一个类名,然后给你的Model类一个addElement方法。或者更简单地说,使用填充数据的DefaultListModel对象。