ScollableComposite and different layouts [message #460486] |
Mon, 29 August 2005 20:13 |
Eclipse User |
|
|
|
Originally posted by: stefan_30.gmx.net
Hi there,
I have a large problem...
I have to develop an application for a Compaq iPaq Pocket PC 3970. The shell
is divided into two composites. The lower area contains always different
tables (only one table is visible) and has an own composite.
The upper composite contains buttons, labels and textfields.
If the keyboard will be opened, the lower area (tables) should be
"minimized" and scrollable (like figure 4 and 5 in the following link)
http://www.eclipse.org/articles/Article-small-cup-of-swt/poc ket-PC.html
The problem is:
If the layout from the shell is set to FillLayout, the application has the
functionality more or less (both areas have the same width (upper area is
much too large)). If the application is automatically resized, the upper
tables are correctly scrollable.
Has the shell another layout, the scrollbars are not visible and there is no
possibility to make them visible.
Where can I download the source from SWT/JFace?? I want to compare the
FillLayout with the GridLayout class??
Enclosed I will post the code....
Display display = new Display ();
Shell shell = new Shell (display);
shell.setLayout(new FillLayout());
// RowLayout rowLayout = new RowLayout();
// rowLayout.wrap = false;
// shell.setLayout(rowLayout);
// GridLayout gridLayout = new GridLayout();
// gridLayout.numColumns = 2;
// gridLayout.marginWidth = 1;
// shell.setLayout(gridLayout);
final ScrolledComposite sc1 = new ScrolledComposite (shell,
SWT.H_SCROLL | SWT.V_SCROLL);
// final ScrolledComposite sc2 = new ScrolledComposite (shell,
SWT.H_SCROLL | SWT.V_SCROLL);
Table table1 = new Table(sc1,SWT.SINGLE);
table1.setHeaderVisible(false);
table1.setLinesVisible(true);
TableColumn col1 = new TableColumn(table1,SWT.LEFT);
col1.setWidth(200);
TableColumn col2 = new TableColumn(table1,SWT.LEFT);
col2.setWidth(60);
for (int i = 0; i < 60; i++) {
TableItem item1 = new TableItem(table1,0);
item1.setText(new String[]{"Line " + i,"b"});
}
// Table table2 = new Table(sc2,SWT.SINGLE);
// table2.setHeaderVisible(false);
// table2.setLinesVisible(true);
// for (int i = 0; i < 10; i++) {
// TableColumn col21 = new TableColumn(table2,SWT.LEFT);
// col21.setWidth(80);
// }
// for (int i = 0; i < 60; i++) {
// TableItem item1 = new TableItem(table2,0);
// item1.setText(new String[]{"Line "+i,"c"});
// }
sc1.setContent(table1);
table1.pack();
// sc2.setContent(table2);
// table2.pack();
// sc1.setAlwaysShowScrollBars(true);
// sc1.setExpandVertical(true);
final ScrollBar vBar1 = sc1.getVerticalBar ();
// final ScrollBar vBar2 = sc2.getVerticalBar ();
final ScrollBar hBar1 = sc1.getHorizontalBar ();
// final ScrollBar hBar2 = sc2.getHorizontalBar ();
SelectionListener listener1 = new SelectionAdapter () {
public void widgetSelected (SelectionEvent e) {
int x = hBar1.getSelection() * (hBar2.getMaximum() -
hBar2.getThumb()) / Math.max(1, hBar1.getMaximum() - hBar1.getThumb());
int y = vBar1.getSelection() * (vBar2.getMaximum() -
vBar2.getThumb()) / Math.max(1, vBar1.getMaximum() - vBar1.getThumb());
sc2.setOrigin (x, y);
}
};
SelectionListener listener2 = new SelectionAdapter () {
public void widgetSelected (SelectionEvent e) {
int x = hBar2.getSelection() * (hBar1.getMaximum() -
hBar1.getThumb()) / Math.max(1, hBar2.getMaximum() - hBar2.getThumb());
int y = vBar2.getSelection() * (vBar1.getMaximum() -
vBar1.getThumb()) / Math.max(1, vBar2.getMaximum() - vBar2.getThumb());
sc1.setOrigin (x, y);
}
};
vBar1.addSelectionListener (listener1);
hBar1.addSelectionListener (listener1);
// vBar2.addSelectionListener (listener2);
// hBar2.addSelectionListener (listener2);
shell.setSize (500, 500);
shell.open ();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
I hope you can help me!?
|
|
|
Powered by
FUDForum. Page generated in 0.02566 seconds