Как получить ширину столбца Jtable после того, как пользователь изменяет его - PullRequest
0 голосов
/ 28 мая 2019

Я хотел бы знать, как получить ширину столбца после того, как пользователь изменяет его, чтобы я мог сохранить его.

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

следующая проблема - еслия выбираю столбец, затем изменяю ширину, он работает и печатает ширину при изменении столбца, но если я выбрал, скажем, столбец 3, но затем продолжаю изменять ширину столбца 2 без выбора строки в этом столбце 2, он будет продолжатьвыкладывайте ширину столбца 3, когда я изменяю столбец 2. чтобы он работал, как и ожидалось, с помощью метода select, но должен быть лучший способ получить ширину столбца, который я изменяю.

любойидеи?

jt.getColumnModel().addColumnModelListener(new TableColumnModelListener() {

        public void columnAdded(TableColumnModelEvent e) {
            // TODO Auto-generated method stub

        }

        public void columnRemoved(TableColumnModelEvent e) {
            // TODO Auto-generated method stub

        }

        public void columnMoved(TableColumnModelEvent e) {
            // TODO Auto-generated method stub

        }

        public void columnMarginChanged(ChangeEvent e) {
            int col = jt.getSelectedColumn();
            if (col >= 0) {
                TableColumn tc = jt.getColumnModel().getColumn(col);
                System.out.println(tc.getWidth());
            }
        }

        public void columnSelectionChanged(ListSelectionEvent e) {
            // TODO Auto-generated method stub

        }

    });

1 Ответ

0 голосов
/ 28 мая 2019

Вы можете попробовать привести источник ChangeEvent к TableColumn.

. Если у вас есть время, попробуйте следующее в вашем TableColumnModelListener ...

jt.getColumnModel().addColumnModelListener(new TableColumnModelListener() {

        public void columnAdded(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }

        public void columnRemoved(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }

        public void columnMoved(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }

        public void columnMarginChanged(ChangeEvent e) {

            Object source = e.getSource();
            if (source instanceof TableColumn) {

                TableColumn tableColumn = (TableColumn) source;

                System.out.println(tableColumn.getWidth());
            }
        }

        public void columnSelectionChanged(ListSelectionEvent e) {
            // TODO Auto-generated method stub
        }
    });
...