0

Oracleの公式ページの例のコードを使用しています。テーブル データの並べ替えとフィルター処理のためのもの。元のバリアントには 2 つのフィールドがあります。1 つはフィルタリング基準を入力するためのもので、もう 1 つはグリッドから選択された行を表示するためのものです。2 番目のものは必要ありません。フィルター フィールドだけを残したいのですが、何かが足りないようです。以下は、不要だと思ったコードにコメントを付けた私のコードです。

public TableFilterDemo() {
        super();
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

        //Create a table with a sorter.
        MyTableModel model = new MyTableModel("customers.dat");
        sorter = new TableRowSorter<MyTableModel>(model);
        table = new JTable(model);
        table.setRowSorter(sorter);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
        table.setFillsViewportHeight(true);

        //For the purposes of this example, better to have a single
        //selection.
      //  table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        //When selection changes, provide user with row numbers for
        //both view and model.
     /*   table.getSelectionModel().addListSelectionListener(
                new ListSelectionListener() {
                    public void valueChanged(ListSelectionEvent event) {
                        int viewRow = table.getSelectedRow();
                        if (viewRow < 0) {
                            //Selection got filtered away.
                            statusText.setText("");
                        } else {
                            int modelRow = 
                                table.convertRowIndexToModel(viewRow);
                            statusText.setText(
                                String.format("Selected Row in view: %d. " +
                                    "Selected Row in model: %d.", 
                                    viewRow, modelRow));
                        }
                    }
                }
        );
*/

        //Create the scroll pane and add the table to it.
        JScrollPane scrollPane = new JScrollPane(table);

        //Add the scroll pane to this panel.
        add(scrollPane);

        //Create a separate form for filterText and statusText
        JPanel form = new JPanel(new SpringLayout());
        JLabel l1 = new JLabel("Student Number:", SwingConstants.TRAILING);
        form.add(l1);
        filterText = new JTextField();
        //Whenever filterText changes, invoke newFilter.
        filterText.getDocument().addDocumentListener(
                new DocumentListener() {
                    public void changedUpdate(DocumentEvent e) {
                        newFilter();
                    }
                    public void insertUpdate(DocumentEvent e) {
                        newFilter();
                    }
                    public void removeUpdate(DocumentEvent e) {
                        newFilter();
                    }
                });
        l1.setLabelFor(filterText);
        form.add(filterText);
       /* JLabel l2 = new JLabel("Status:", SwingConstants.TRAILING);
        form.add(l2);
        statusText = new JTextField();
        l2.setLabelFor(statusText);
        form.add(statusText); */ 
        SpringUtilities.makeCompactGrid(form, 2, 2, 6, 6, 6, 6);
        add(form);
    }

ti compile を試みると多くの間違いが発生しますが、最初のエラーは次のとおりです。

スレッド「AWT-EventQueue-0」の例外 java.lang.ArrayIndexOutOfBoundsException: そのような子はありません: 2

4

1 に答える 1

0

The commented block is not needed but along with it the 2nd parameter passed in SpringUtilities.makeCompactGrid(form, 1, 2, 6, 6, 6, 6); should be changed from 2 like it is in my original question to 1 like it's here.

于 2012-11-02T13:53:25.207 に答える