0

参加したいプログラムの評価に取り組んでいます。プログラムによって提供されたチュートリアルポイントにある「チュートリアル」を解釈、理解、または適切に使用する方法について、まだ少し向きを変えています。

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) 場所: 変数 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

しかし、正直なところ、これらのソースをデバッグに使用する方法を正しく理解していないように感じます。このコードに基づいて、オブジェクト --> 文字列を適切に使用していないように感じます。

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

}

コメントを介して、この支援要請をコードに含めます。私は詐欺師ではありません。私はこれについて数日間見て、働き、検索し、考えました。この時点で、助けを求めるのは賢明だと思います。

4

1 に答える 1

2

JList API を調べると、コンパイラが正しく、JList にはメソッドがないことがわかりますが、落胆しないでください。DefaultListModelクラスにはaddElement(...)このメソッドがあります。を呼び出して JList からこれを抽出し、抽出されたモデルを呼び出すことができます。getModel()addElement(...)

編集: ダメです。AbstractListModel から派生した独自のモデルを使用しています。モデルを非抽象にする必要があります。クラス名を付けてから、Model クラスに addElement メソッドを付けます。それか、もっと簡単に言えば、データを入力する DefaultListModel オブジェクトを使用します。

于 2016-01-09T20:14:53.600 に答える