# Horizontaler Scroll bei swt Table ausstellen



## Ischterai (17. März 2010)

Morgen,

ich muss mich seit ein Paar Tagen mit SWT auseinandersetzen, soll damit eine neue GUI für ein altsystem bauen, nur kommen ich jetzt nicht mehr weiter. Mein Problem ist wie Oben schon steht, das ich das vertikale Scrollen nicht ausgestellt bekommen. Wenn etwas über die Breite der einen spallte in der Tabelle hinaus gehen sollte soll das einfach nicht gezeigt werden.

Das einzige was ich dazu gefunden habe ist: 

```
TableFieldCompo.getHorizontalBar().setVisible(false); // table ist die Tabelle genaueres unten
```

sonst habe ich nichts gefunden womit an die bar heran kommt.

Weis einer wie man das macht?


Hier der Code der Tabelle und der shell:

```
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;

public class Test {

	private Display display;
	private Shell shell;
	private Table table;
	private TableColumn tcAspect;
	private TableColumn tcprice;
	private GridLayout shelllayout;
	
	public TestComposite() {
		display = new Display();
	    shell = new Shell(display);
	    shell.setText("Test");
	    shell.setSize(1024, 600);
	 
	    createGUI();
	 
	    shell.open();
	    while (!shell.isDisposed()){
	      if (!display.readAndDispatch())
	         display.sleep();
	      }
	}
	
	private void createGUI() {

		shelllayout = new GridLayout();
		shelllayout.verticalSpacing = 20;
		shelllayout.marginHeight = 20;
		shelllayout.marginWidth = 20;
		shelllayout.numColumns = 3;
		shelllayout.makeColumnsEqualWidth = true;
	   shell.setLayout(shelllayout);
		   
	   shell.addListener (SWT.Resize,  new Listener () {

			@Override
			public void handleEvent(Event arg0) {
				// (gesammt größe Fenster - Abstand - Rand) / 3 - Scrollbereich
				int tablewidth = (shell.getClientArea().width 
						- shelllayout.horizontalSpacing 
						- 2*shelllayout.marginWidth)/3
						- table.getVerticalBar().getSize().x;
				int Aspectwidth = tablewidth*2/3-table.getBorderWidth();
				int Pricewidth = tablewidth/3-table.getBorderWidth();
		        tcAspect.setWidth(Aspectwidth);
		        tcprice.setWidth(Pricewidth);
			}
	   });
	   	   
	   GridData data = new GridData();
	   data.grabExcessHorizontalSpace = true;
	   data.grabExcessVerticalSpace = true;
	   data.verticalAlignment = GridData.FILL;
	   data.horizontalAlignment = GridData.FILL;
		   
           // hier ist das erstellen von table, habe ich mal raus gelassen wegen Übersichtlichkeit, ist etwas ausufernd...
	   
	   Group group = new Group(shell, SWT.VERTICAL);
	   GridData gridData = new GridData(GridData.FILL_BOTH);
	   gridData.horizontalSpan = 2;
	   gridData.verticalSpan = 2;
	   group.setLayoutData(gridData);
	   
	   GridLayout gridLayout2 = new GridLayout();
	   gridLayout2.numColumns = 3;
	   gridLayout2.marginHeight = 40;
	   gridLayout2.marginWidth = 50;
	   group.setLayout(gridLayout2);
	   
	   GridData gridDatacombo = new GridData(GridData.FILL_BOTH);
	   gridDatacombo.verticalSpan = 3;
	   
	   GridLayout gridLayoutcombo = new GridLayout();
	   gridLayoutcombo.marginWidth = 30;
	   gridLayoutcombo.numColumns = 1;
	   
	   Table TableFieldCompo;
	   for( int i=0; i<9; i++){
		   TableFieldCompo = new Table(group, SWT.BORDER | SWT.CENTER | SWT.FULL_SELECTION);
		   TableFieldCompo.setLayoutData(data);
		   TableFieldCompo.getHorizontalBar().setVisible(false); 
	   }
	 
	}
	
	public static void main(String[] args) {
		new Test();
	}
}
```


----------



## vfl_freak (17. März 2010)

Moin,

bin mir nicht sicher, ob dies Dein Problem betrifft, aber die Schleife sieht etwas urig aus

```
Table TableFieldCompo;

for( int i=0; i<9; i++ )
{
       TableFieldCompo = new Table(group, SWT.BORDER | SWT.CENTER | SWT.FULL_SELECTION);
       TableFieldCompo.setLayoutData(data);
       TableFieldCompo.getHorizontalBar().setVisible(false); 
}
```

Du durchläufst sie zwar 9-mal, machst aber eben auch 9-mal das Gleiche, da nirgendwo die Zählvaribale 'i' ausgewertet wird!

Ist das wirklich so richtig 

Gruß
Klaus


----------



## Ischterai (17. März 2010)

Jo, die soll erstmal 9 Tabellen erstellen, ich habe die Oberfläche seperat von dem Altsystem entworfen, bei dem werde ich die in ein Datenobjekt mit anderen Infos tun, aber zur zeit passt das schon, ich will erstmal schauen das die Gui richtig läuft ehe ich die richtigen daten rein geb. war erstmal nur zum schnellen erstellen.


----------

