2012-04-16 62 views
4

我正在使用JFace TableViewer和TableColumnLayout。我怎樣才能設置列的最小寬度,或者至少防止它被調整爲0的寬度?防止將JFace TableColumn調整爲0的寬度

TableColumnLayout layout = new TableColumnLayout(); 
parent.setLayout(layout); 
TableViewer viewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.BORDER); 

//adding a few columns like this 
TableColumn col = new TableColumn(viewer.getTable(), SWT.LEFT); 
int minWidth = 100; 
layout.setColumnData(col, new ColumnWeightData(10, minWidth, true)); 
col.setMoveable(true); 
... 

看來ColumnWeightData的minWidth參數沒有兌現,我仍然可以調整列的寬度爲0。

使用像這樣的工作:

col.addControlListener(new ControlListener(){ 
    @Override 
    public void controlMoved(ControlEvent e) { 
    } 

    @Override 
    public void controlResized(ControlEvent e) { 
     if(col.getWidth()<5) 
      col.setWidth(5); 

    }}); 

但似乎比較難看的,是有一個更清潔的方式做到這一點?

+0

Helmuth M.,當我這樣做的時候,以及1)當我非常緩慢地移動(左)第3列的線/柵格(第2列的右邊柵格/線)時,那麼第2列是不可見的了。因此,列2的寬度不保持爲5.儘管我可以再次移動列3的行並使列2可見。但爲什麼寬度沒有維持到第2列的5?任何想法我可能做錯了什麼? 2)當我重複這種行爲三次時,即我將2,3和4列逐一移動到第一列,並使其不可見。我無法再檢索它。 – user523956 2014-11-07 15:11:43

回答

6

Table對此沒有內置支持。因此,一個Resize聽衆 - 就像你在你的問題中表明的那樣 - 是唯一的方法。