What happened to the scroll bars ? [message #457933] |
Thu, 07 July 2005 15:45 |
Eclipse User |
|
|
|
Originally posted by: mike.swt.demon.co.uk
Hello
First, thanks to Veronika for her response to my post on the thread "Is
Layout required for Event handling?", appologies for the long delay in
replying but I have had a prolonged unexpected absense from the project. The
changes to the code have helped my understanding of SWT.
However I am trying to replicate the effect of the Excel Split pane/Freeze
pane combination in which the left hand area is narrower than the right. I
therefore changed the FillLayout to RowLayout, set the rowLayout.wrap to
false and the two tables were displayed as required but the scroll bars have
disappeared. I also tried the GridLayout but this had the same effect.
Why should these controls behave differently in these layouts? How do I get
the scrollbars back in the other layouts?
I have tried changing the table pack to setSize, this makes the vertical
scroll bars appear but the selection listenser stops and if the combination
of the two tables is wider than the shell, the right hand scroll bar cannot
be seen.
Here is the code
package com.wcg.framework.workflow.ui.designer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.ScrollBar;
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 MatrixView {
public MatrixView() {
}
public static void main (String [] args) {
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();
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);
System.out.println("Show");
shell.setSize (500, 500);
shell.open ();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
}
|
|
|
Powered by
FUDForum. Page generated in 0.03568 seconds