2010-02-10 7 views
0

J'ai une table dans un scrollPane. Il y a 6 colonnes dans ma table. Je veux que les deux dernières colonnes soient plus larges que les autres colonnes. Mais après avoir défini la taille des colonnes, la barre de défilement verticale a disparu. Si je commente le code de réinitialisation de la largeur des colonnes, tout redevient normal. Quelqu'un pourrait-il me dire quel est le problème? Merci beaucoup!!barre de défilement verticale disparaît après redimensionnement de la largeur de la colonne

Je copié plusieurs dimentions connexes soufflent:

table.setPreferredScrollableViewportSize(new Dimension(900, 500)); 
feedback = new JScrollPane(table); 
feedback.setMinimumSize(new Dimension(900, 400)); 

le code pour redimensionner les colonnes:

TableColumn column = null; 
for (int i = 0; i < 6; i++) { 
    column = table.getColumnModel().getColumn(i); 
    if (i == 4) { 
     column.setPreferredWidth(250); //third column is bigger 
    } else { 
     if (i==5) { 
      column.setPreferredWidth(250); 
     } 
     else { 
      column.setPreferredWidth(100); 
     } 
    } 
} 

Répondre

1

Je suis incapable de reproduire le problème que vous décrivez. Il peut y avoir un problème avec votre mise en page, ou il peut nécessiter Setting the Scroll Bar Policy.

import javax.swing.*; 
import javax.swing.table.*; 

public class TablePanel extends JPanel { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame f = new JFrame("JTable"); 
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       f.add(new TablePanel()); 
       f.pack(); 
       f.setVisible(true); 
      } 
     }); 
    } 

    public TablePanel() { 
     TableModel dataModel = new MyTableModel(); 
     JTable table = new JTable(dataModel); 
     table.setAutoCreateRowSorter(true); 
     table.getColumnModel().getColumn(0).setPreferredWidth(100); 
     table.getColumnModel().getColumn(1).setPreferredWidth(150); 
     table.getColumnModel().getColumn(2).setPreferredWidth(200); 
     JScrollPane jsp = new JScrollPane(table); 
     this.add(jsp); 
    } 

    private static class MyTableModel extends AbstractTableModel { 

     @Override 
     public int getRowCount() { 
      return 30; 
     } 

     @Override 
     public int getColumnCount() { 
      return 3; 
     } 

     @Override 
     public Object getValueAt(int row, int col) { 
      return Math.pow(row, col + 1); 
     } 

     @Override 
     public Class<?> getColumnClass(int col) { 
      return getValueAt(0, col).getClass(); 
     } 
    } 
} 
Questions connexes