2012-09-23 2 views
1

제 어플리케이션에서는, JTable에 몇개의 사이즈 변경 가능한 열을 사용하고 있습니다. 마지막으로 앱에 표시되는 열의 크기를 저장하고 싶습니다.JTable의 TableColumn의 폭

제 문제는 열의 크기를 수동으로 조정하더라도 getWidth() 함수는 항상 실제 크기의 열에 관계없이 항상 75 (기본값)를 반환한다는 것입니다. 디버거를 사용하여 TableColumn 객체를 보면 최소 크기는 15이고 최대 크기는 2147483648이며 기본 크기는 75이고 크기는 75입니다. 그러나 표시된 크기는 분명히 75가 아닙니다!

내 열의 실제 크기는 어떻게 얻을 수 있습니까? 폭을 취득하기위한

코드 :

 for(i=0;i<TableOpérations.getColumnCount();i++){ 
       tc=TableOpérations.getColumn(TableOpérations.getColumnName(i)); 

       width=tc.getWidth(); 
    } 
+0

는 그래서 우리는 당신이 정말 오래된 더 잘 – mKorbel

+0

가 SSCCE을 보여주세요, GUI Builer을 사용했다. 내 JInternalFrame에는 "TableOpérations"라는 JTable이 포함 된 JScrollPane이 있습니다. 그리고 그게 다야! – kleopatra

답변

2

난 당신이보고있는 동작을 볼 수 없습니다. 다음 프로그램은 버튼을 누를 때마다 정확한 너비를 표시합니다. 다른 테이블 또는 테이블 열 모델의 열 너비를 표시해야합니다.

public class TableColumnTest extends JFrame { 

    private JTable table; 

    public TableColumnTest() { 
     JPanel p = new JPanel(); 
     p.setLayout(new BorderLayout()); 
     table = new JTable(5, 4); 
     p.add(new JScrollPane(table), BorderLayout.CENTER); 
     JButton b = new JButton("Test"); 
     b.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       displayWidths(); 
      } 
     }); 
     p.add(b, BorderLayout.SOUTH); 
     add(p); 
     pack(); 
    } 

    private void displayWidths() { 
     for (int i = 0; i < table.getColumnCount(); i++) { 
      TableColumn column = table.getColumnModel().getColumn(i); 
      System.out.println("Width of column " + i + " : " + column.getWidth()); 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new TableColumnTest().setVisible(true); 
      } 
     }); 
    } 
} 
+0

:-) 일을 재현 할 수 있습니다 그렇지 않으면 문제 – Zelig63

+0

위 질문에 너비를 가져 오는 코드가 추가되었습니다. – Zelig63

+1

버그가 다른 곳에 있습니다. Kleopatra의 질문에 따라 SSCCE를 제공하십시오. 동일한 변수 이름 (하나의 로컬 변수와 하나의 인스턴스 변수)을 가진 두 개의 테이블이 있다고 의심됩니다. 그러나 그것은 코드를 보아서 만 확인할 수 있습니다. –