SWT grabExcessHorizontalSpace update ? refresh ?

moe5k

Mitglied
Hallo,

ich habe hier ein Hauptfenster mit FillLayout. Über ein Menü rufe ich wechselseitig 2 verschiedene composites auf, welche jeweils eine Tabelle beeinhalten. Diese Composites benutzen GridLayout und die
Tabellen haben grabExcessHorizontalSpace=true und grabExcessVerticalSpace=true gesetzt.

Wenn ich das Hauptfenster starte wird immmer schon eines der beiden Composites dargestelllt.
Bei einem Resize oder einem Maximieren des Fensters wird die Tabelle auch auf den ganzen verfügbaren Platz des Fensters ausgedehnt. Wenn ich aber das Fenster schon maximiert habe und wechsel über das menu zum dem anderen Composite nimmt die Tabelle darin nicht den ganzen Platz ein. Sie tut das erst wenn ich das Fenster wieder verkleinere und nochmal maximiere.

Wie kann ich einen refresh (?) machen so dass die "grab"-Optionen auch wirken wenn das Composite in ein größeres Fenster eingebettet wird. Ich habe schon mit .pack() .layout() versucht ... leider ohne erfolg.

Wäre über jeden hinweis dankbar.

Moe
 

Wildcard

Top Contributor
Benutze am besten den SWT.BORDER Style auf dem Composite um zu sehen ob das Composite zu klein ist, oder die Tabelle. Benutzt du Stacklayout zum Umschalten?
 

moe5k

Mitglied
Diesen Code musste ich zwar extrem kastrieren um ihn schnell überschaubar zu machen aber er sollte das Problem verdeutlichen, Das Gridlayout ist notwendig, da noch weitere Inhalte davon abhänge, welche ich hier aber weggelassen habe:

Java:
package temp;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;


public class MainGui extends org.eclipse.swt.widgets.Composite {

	private Menu menuBar;

	private MenuItem mi;
	private Menu miSub;
	private MenuItem check1;
	private MenuItem check2;

	private Composite compo1;
	private Composite compo2;

	
	public static void main(String[] args) 
	{
		MainGui.StartMainGui();
	}
	
	public MainGui(Composite parent, int style) {
		super(parent, style);
		initGUI();
	}

	private void initGUI() {
		try {
			FillLayout thisLayout = new FillLayout();
			this.setLayout(thisLayout);

			{
				menuBar = new Menu(getShell(), SWT.BAR);
				getShell().setMenuBar(menuBar);
				{
					mi = new MenuItem(menuBar, SWT.CASCADE);
					mi.setText("Switch");
					{
						miSub = new Menu(mi);
						mi.setMenu(miSub);
						{
							check1 = new MenuItem(miSub, SWT.PUSH);
							check1.setText("Test1");
							check1.setEnabled(false);
							check1.addSelectionListener(new SelectionAdapter() {
								public void widgetSelected(SelectionEvent evt) {
									check1WidgetSelected(evt);
								}
							});
						}
						{
							check2 = new MenuItem(miSub, SWT.PUSH);
							check2.setText("Test2");
							check2.addSelectionListener(new SelectionAdapter() {
								public void widgetSelected(SelectionEvent evt) {
									newLicensesWidgetSelected(evt);
								}
							});
						}
					}

				}
			}
			this.layout();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		compo1 = new TestDialog(this, SWT.NONE);
	}

	public static void StartMainGui() {    	
		Display display = Display.getDefault();
		Shell shell = new Shell(display);
		MainGui inst = new MainGui(shell, SWT.NULL);
		Point size = inst.getSize();
		
		shell.setLayout(new FillLayout());
		shell.layout();
		if(size.x == 0 && size.y == 0) {
			inst.pack();
			shell.pack();
		} else {
			Rectangle shellBounds = shell.computeTrim(0, 0, size.x, size.y);
			shell.setSize(shellBounds.width, shellBounds.height);
		}

		shell.open();
		size = inst.getSize();
		System.out.println(size.toString());
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
	}

	private void check1WidgetSelected(SelectionEvent evt) {

		if ((compo2 != null)&&(!compo2.isDisposed()))
		{
			compo2.dispose();
		}

		compo1 = new TestDialog(this, SWT.NONE);
		
		this.pack();
		check1.setEnabled(false);
		check2.setEnabled(true);
		
	}
	private void newLicensesWidgetSelected(SelectionEvent evt) { 

		if ((compo1 != null)&&(!compo1.isDisposed()))
		{
			compo1.dispose();
		}

		compo2 = new TestDialog(this, SWT.NONE);
		this.pack();
		check1.setEnabled(true);
		check2.setEnabled(false);


	} 

}

Java:
package temp;


import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

public class TestDialog extends org.eclipse.swt.widgets.Composite {

	
	public TestDialog(final Composite parent, int style) {	

		super(parent, style);
		createContent();
		this.pack();
	}

	public void createContent() 
	{
		{GridLayout thisLayout = new GridLayout();
		this.setLayout(thisLayout);

			Table table = new Table (this, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
			table.setLinesVisible (true);
			table.setHeaderVisible (true);

			String[] titles = {"Bla1", "Bla2"};
			for (int i=0; i<titles.length; i++) {
				TableColumn column = new TableColumn (table, SWT.NONE);
				column.setText (titles [i]);
			}	
			int count = 12;
			for (int i=0; i<count; i++) {
				TableItem item = new TableItem (table, SWT.NONE);
				item.setText (0, "x");
				item.setText (1, "y");

			}
			for (int i=0; i<titles.length; i++) {
				table.getColumn (i).pack ();
			}
			
			GridData tableGData = new GridData();
			tableGData.horizontalAlignment = GridData.FILL;
			tableGData.verticalAlignment = GridData.FILL;
			tableGData.grabExcessHorizontalSpace=true;
			tableGData.grabExcessVerticalSpace=true;
			table.setLayoutData(tableGData);

		}
	}
}

Bin über jeden Hinweis dankbar.
Moe
 

Wildcard

Top Contributor
Dir fehlt einfach ein
Java:
layout(true);
nachdem du die Kinder des Composites geändert hast.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T ProgressBox - Update AWT, Swing, JavaFX & SWT 9
Ernesto95 JavaFX JavaFX GUI mit sehr vielen Update requests AWT, Swing, JavaFX & SWT 4
G update, paintComponent AWT, Swing, JavaFX & SWT 1
T GUI Update /EDT AWT, Swing, JavaFX & SWT 7
izoards JavaFX Concurrency Update UI AWT, Swing, JavaFX & SWT 35
ms_cikar Update swingUtilities Repaint in der Schleife AWT, Swing, JavaFX & SWT 3
J TableView Update/Refresh CPU AWT, Swing, JavaFX & SWT 2
A Verständnisfragen im Umgang mit update() und JFrames AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
blazingblade JavaFX Tableview Clock Column update AWT, Swing, JavaFX & SWT 5
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
M JavaFX ComboBox: Update zur Laufzeit AWT, Swing, JavaFX & SWT 16
W Swing ProgressBar update AWT, Swing, JavaFX & SWT 4
B IconImage update im Tabbedpane AWT, Swing, JavaFX & SWT 3
M Update überschreiben klappt nicht AWT, Swing, JavaFX & SWT 4
Q JList Update Problem AWT, Swing, JavaFX & SWT 1
N Observer: update ruft nicht repaint auf AWT, Swing, JavaFX & SWT 0
M "Update" der JTable funktioniert nicht AWT, Swing, JavaFX & SWT 2
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
C Swing Update von swing-TableModels per Thread. Eins geht, das andere nicht, warum? AWT, Swing, JavaFX & SWT 12
V Swing Update Textarea AWT, Swing, JavaFX & SWT 2
T Event Handling JFreeChart Update AWT, Swing, JavaFX & SWT 2
Farbtopf Live update JFreeChart AWT, Swing, JavaFX & SWT 3
F Swing GUI-Thread für automatisches Update nutzen AWT, Swing, JavaFX & SWT 10
El_Lobo Swing bei Update von Graphik Koordinatensystem nicht jedesmal neu zeichnen AWT, Swing, JavaFX & SWT 2
M Update JPanel AWT, Swing, JavaFX & SWT 12
N update model nach dem filtern AWT, Swing, JavaFX & SWT 2
E Umgang mit der Update Methode AWT, Swing, JavaFX & SWT 38
E Swing Update JTable AWT, Swing, JavaFX & SWT 6
L Update JTree Verzeichnisse AWT, Swing, JavaFX & SWT 9
G Swing Update-Funktion für Swing-Anwendung AWT, Swing, JavaFX & SWT 5
E Swing JTextField Listener nach Update?! AWT, Swing, JavaFX & SWT 2
D Swing JTable Problem bei automatischem update von Zellen AWT, Swing, JavaFX & SWT 3
P 2D-Grafik PaintComponent() übernimmt keine Werte aus update() AWT, Swing, JavaFX & SWT 8
D Swing update eines Labels nicht sichtbar AWT, Swing, JavaFX & SWT 9
N Tablle nach SQL-Update neu Laden AWT, Swing, JavaFX & SWT 4
P Observer und GUI Update AWT, Swing, JavaFX & SWT 2
w0ddes Swing Update: Laufendes GUI updaten AWT, Swing, JavaFX & SWT 8
D JTable während edit kein update machen lassen AWT, Swing, JavaFX & SWT 2
M Swing Kein update bei simulierten HTML-Link AWT, Swing, JavaFX & SWT 4
C SWT Shell update probleme - Mausbewegung nötig AWT, Swing, JavaFX & SWT 2
hdi Swing GUI update vs. Process Speed AWT, Swing, JavaFX & SWT 31
hdi Swing Gui Update Problem (EDT) AWT, Swing, JavaFX & SWT 6
C JList update über tabbedPane? AWT, Swing, JavaFX & SWT 18
M Update einer JTEextArea AWT, Swing, JavaFX & SWT 2
H JTable mySQL Update AWT, Swing, JavaFX & SWT 8
S Update des fensters beim Ersetzen von JPanels AWT, Swing, JavaFX & SWT 9
G Features nach Update löschen AWT, Swing, JavaFX & SWT 2
J Fragen zur Vererbung und Update AWT, Swing, JavaFX & SWT 12
B Update von JLabels AWT, Swing, JavaFX & SWT 2
C Habe Probleme beim Bild laden! *Update 30.11.2006* AWT, Swing, JavaFX & SWT 28
C JTreeTable update Problem AWT, Swing, JavaFX & SWT 4
S Probleme mit dem Update einer JList AWT, Swing, JavaFX & SWT 7
B View zeichnet Daten aus dem Model ohne Update AWT, Swing, JavaFX & SWT 4
A Update von Frameinhalt und Scrollbar AWT, Swing, JavaFX & SWT 11
F MVC: Update von View und Controller AWT, Swing, JavaFX & SWT 5
C JTable update: Selektion beibehalten AWT, Swing, JavaFX & SWT 12
P paintComponent /paint/ update/ offscreenImage / Graphics2D / AWT, Swing, JavaFX & SWT 4
S JMenuBar + update AWT, Swing, JavaFX & SWT 3
G JTree - ungültiger selection update AWT, Swing, JavaFX & SWT 2
G Problem mit JLabel Update AWT, Swing, JavaFX & SWT 3
C [JTable] Update der Datenbank AWT, Swing, JavaFX & SWT 6
N update()-Methode für Canvas AWT, Swing, JavaFX & SWT 9
A problem mit update nach event, JSplitpane spinnt AWT, Swing, JavaFX & SWT 2
S Update von Grafik auf JPanel AWT, Swing, JavaFX & SWT 2
M GUI Update während der Verarbeitung einer Methode AWT, Swing, JavaFX & SWT 3
M update JTable AWT, Swing, JavaFX & SWT 3
T Problem bei Update von JTables in JTabbedPane AWT, Swing, JavaFX & SWT 2
D Problem beim Update von unsichtbaren JComponents mit Timern AWT, Swing, JavaFX & SWT 5
D Swing: GUI-Update-Problem AWT, Swing, JavaFX & SWT 3
J Warum funktioniert das Update des UI nicht? AWT, Swing, JavaFX & SWT 8
I GUI-Update-Probleme AWT, Swing, JavaFX & SWT 2
G Update von JPanel nach Buttonbetätigung AWT, Swing, JavaFX & SWT 1
Juelin Objekte refresh AWT, Swing, JavaFX & SWT 3
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
Tort-E JavaFX Stage reload, refresh ... AWT, Swing, JavaFX & SWT 3
D ComboBoxCellEditor Refresh beim Focus AWT, Swing, JavaFX & SWT 4
T JTable Cell Refresh AWT, Swing, JavaFX & SWT 5
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
C SWT refresh einer Tabelle AWT, Swing, JavaFX & SWT 4
J SWT Globale Refresh-Aktion programmtechnisch aufrufen AWT, Swing, JavaFX & SWT 6
L Probleme beim Refresh von JTable AWT, Swing, JavaFX & SWT 7
F SWT table refresh per Thread AWT, Swing, JavaFX & SWT 2
K SWT TableViewer refresh() im Dialog AWT, Swing, JavaFX & SWT 2
M JRadioButton refresh AWT, Swing, JavaFX & SWT 5
S Refresh von JTableModel funktioniert nur ein Mal AWT, Swing, JavaFX & SWT 4
D JList, JTree, JTextarea - Daten"refresh" AWT, Swing, JavaFX & SWT 15
L JFrame Refresh-Problem AWT, Swing, JavaFX & SWT 4
A Refresh JPanel AWT, Swing, JavaFX & SWT 6
R Refresh Label AWT, Swing, JavaFX & SWT 4
J Expertenfrage zu Refresh nach hinzufuegen von Componeten? AWT, Swing, JavaFX & SWT 8
dzim NullPointer bei refresh() einer JFace TableViewer AWT, Swing, JavaFX & SWT 2
Lazybone JTree refresh Problem AWT, Swing, JavaFX & SWT 3
X Focusproblem beim Refresh eines jLabels AWT, Swing, JavaFX & SWT 4
F Paint-Methode Überschreiben macht Refresh-Fehler ? AWT, Swing, JavaFX & SWT 8
D jTabbedPane refresh AWT, Swing, JavaFX & SWT 2
S Display Refresh AWT, Swing, JavaFX & SWT 2
X Refresh eines Frames AWT, Swing, JavaFX & SWT 1
P JFrame refresh AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben