Автоматическое вертикальное изменение размера JTable по содержимому - PullRequest
2 голосов
/ 13 сентября 2010

Знаете ли вы какой-нибудь способ заставить JTable изменить размер до максимальной заранее заданной высоты и затем предоставить полосы прокрутки?

Ответы [ 2 ]

2 голосов
/ 13 сентября 2010

Хорошо. Я нашел путь. Не самый чистый, но он работает.

Если размер JTable определяется другим контейнером (в моем случае это был JPanel), идея состоит в том, чтобы рассчитать высоту панели на основе JTable.getRowCount ().

так что это был простой случай установки что-то вроде этого:

  if (table.getRowCount() > 0 && table.getRowCount()<5){
    lineJPanel.setMaximumSize(new Dimension(32500, 70+table.getRowCount()*table.getRowHeight()));
  }else{
    lineJPanel.setMaximumSize(new Dimension(32500, 200));
  }
0 голосов
/ 31 декабря 2010
    String[] names = {"COL1","COL2","COL3"};
    Object[][] data;
    DefaultTableModel dtm= new DefaultTableModel(data, names);
    JTable table = new JTable(dtm)
    {
        public boolean isCellEditable(int rowIndex, int colIndex) 
        {
            return false;
        }
   };

тогда ...

JScrollPane scrollPane = new JScrollPane(table); 
scrollPane.setPreferredSize(new Dimension(700, 500)); //your table not move more
panel1.add(scrollPane, BorderLayout.CENTER);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...