Я хочу изменить размер ширины столбца JTable [duplicate]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

20
задан Anubis 13 July 2013 в 06:57
поделиться

4 ответа

Вы можете попробовать следующее:

public void resizeColumnWidth(JTable table) {
    final TableColumnModel columnModel = table.getColumnModel();
    for (int column = 0; column < table.getColumnCount(); column++) {
        int width = 15; // Min width
        for (int row = 0; row < table.getRowCount(); row++) {
            TableCellRenderer renderer = table.getCellRenderer(row, column);
            Component comp = table.prepareRenderer(renderer, row, column);
            width = Math.max(comp.getPreferredSize().width +1 , width);
        }
        if(width > 300)
            width=300;
        columnModel.getColumn(column).setPreferredWidth(width);
    }
}

JTable [/g1]

Это нужно выполнить перед методом изменения размера. Если у вас есть:

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

JTable [/g2]

48
ответ дан Bill K 28 August 2018 в 07:48
поделиться

Нет возможности автоматически изменять размер одного столбца больше другого.

Возможно, вы можете сделать что-то вроде:

tca = new TableColumnAdjuster( table, 0 );
tca.adjustColumns();
TableColumnModel tcm = table.getColumnModel();  
TableColumn tc = tcm.getColumn(1);
tc.setWidth(tc.getWidth() + 25);

Это позволит вам добавить дополнительное пространство для столбец 1. Это дополнительное пространство будет добавлено только при первом отображении таблицы.

Другой вариант заключается в использовании:

table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

Это позволит выделить дополнительное пространство пропорционально каждому столбцу .

5
ответ дан camickr 28 August 2018 в 07:48
поделиться

setAutoResizeMode () сообщит вашей таблице, как изменить размер, вы должны дать ему попробовать все возможные варианты, чтобы увидеть различия. В моем случае я хотел бы конкретно изменить размер двух столбцов и позволить ему решить, как настроить все остальные .

jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
TableColumnModel colModel=jTable1.getColumnModel();
colModel.getColumn(1).setPreferredWidth(25);    
colModel.getColumn(2).setPreferredWidth(400);
1
ответ дан Edwin Barahona 28 August 2018 в 07:48
поделиться

Вы можете сделать это:

JPanel jp = new JPanel();
jp.add(table);

jp.setLayout(new GridLayout(1,1)); /* little trick ;) and believe me that this step is important to the automatic all columns resize! A import is also needed for using GridLayout*/
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); // this is obvius part
0
ответ дан Meho HoMe Hatić 28 August 2018 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: