[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.platform.swt] Re: TableColumn pack problem

The workaround is to create a dummy column, set the width to 0 and set resizable to false.

    colLast.setWidth(0);
    colLast.setResizable(false);

This stops the growing problem but you still have the extra space from the vertical and horizontal scrollbars that aren't shown. I tried setting their visibility but the method call had no effect.

As I looked through SWT and JFace by Rob Warner and Robert Harris, I noticed this bug is visible in Figure 8-21 and 8-22.

If there was a way to intercept the shell layout call, the size could modified to remove the thickness of the scrollbars.

Best regards,
Robin



Robin Wilson wrote:
I can probably find a workaround so I'm not dead at all. This is my first adventure with SWT so I'm really just trying to find out if my assumptions are wrong or this is a bug.

Correct behaviour or not, if reasonable usage of the API produces unexpected results, then it is either a documentation bug, a design error, or a code bug. Any way you characterize it, it's still a bug to the SWT user. From your description it sure sounds like a bug to me. No big deal, bugs happen.

I appreciate your investigation of the problem. If I can find a workaround I'll post it here.

Best regards,
Robin








Steve Northover wrote:

Sigh. I've gotten to the bottom of it and have yet to decide whether it is
an SWT bug or the correct (unwanted) behavior. The problem is that
Column.pack() for the last column is not taking into account the space for
the scroll bar. When you call shell.pack(), this eventually makes the table
grow the extra space for the scroll bar ... and so on. How dead are you?
It may be a while until I get to this again.


"Robin Wilson" <robinwilson@xxxxxxx> wrote in message
news:ctbb1v$o1u$1@xxxxxxxxxxxxxxxxxx

I haven't heard from anyone yet on this. Is it a SWT bug or am I doing
something wrong?

Best regards,
Robin


Robin Wilson wrote:

I'm using Eclipse Version: 3.0.0 on Windows XP. This snippet illustrates
another problem I'm having. The first time the table is shown, there is
extra space after the last column that looks like it's wide enough for a
scroll bar. Then as you press the button, the last column grows


everytime.

Here's my snippet:

/*
* Created on Jan 24, 2005 by Robin Wilson
*/

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

public class TableColumnProblemExample {
   public static void main(String[] args) {
       Display display = new Display();
       final Shell shell = new Shell(display);
       shell.setText("Table Column Pack");
       GridLayout vertical = new GridLayout();
       vertical.numColumns = 1;
       shell.setLayout(vertical);
       final Table table = new Table(shell, SWT.SINGLE);
       table.setHeaderVisible(true);
       table.setLinesVisible(true);
       final TableColumn col1 = new TableColumn(table,SWT.CENTER);
       col1.setText("Column 1");
       final TableColumn col2 = new TableColumn(table,SWT.CENTER);
       col2.setText("Column 2");
       col1.pack();
       col2.pack();
       Button button = new Button(shell, SWT.PUSH);
       button.setText("Fill Data");
       button.addSelectionListener( new SelectionAdapter() {
           public void widgetSelected(SelectionEvent event) {
               //table.layout(true);
               table.setRedraw(false);
               table.removeAll();
               String [] data1 = { "1", "2" };
               String [] data2 = { "3", "4" };
               TableItem item1 = new TableItem(table, SWT.NONE);
               item1.setText( data1 );
               TableItem item2 = new TableItem(table, SWT.NONE);
               item2.setText( data2 );
               col1.pack();
               col2.pack();
               shell.pack();
               table.setRedraw(true);
           }
       });

       shell.pack();
       shell.open();
       while (!shell.isDisposed()) {
           if (!display.readAndDispatch())
               display.sleep();
       }
   }
}




Steve Northover wrote:


1) Which platform?
2) Post a stand alone snippet that shows the problem.

"Robin Wilson" <robinwilson@xxxxxxx> wrote in message
news:cstmik$116$1@xxxxxxxxxxxxxxxxxx


The first time I create my table and pack all the columns it looks
great.
After, I change the contents and call pack on each column again the


last

column expands. I'm sure I must be doing something wrong. Can someone



please


give me a hint or point me to a tutorial on tables? I've been


searching


and


searching but with no luck so far.

Thanks!