SWT Unterbindung der Minimierung/Maximierung eines Fensters

Saliver

Aktives Mitglied
Hallo Muchachos,

ich find' mich einfach nicht zurecht. Seit heut' Morgen bin ich auf der Suche nach einem Codeschnipsel, welchses die Maximierung/Minimierung meines Java Fensters unterbindet.
Kann mir jemand dabei helfen?

PS: Es sollte das SWT Framework genutzt werden.


Viele Grüße aus Hamburg,
Saliver
 

Saliver

Aktives Mitglied
Leider nicht, habe diesen Thread bereits gelesen und mir hat er bei einem Problem leider nicht geholfen.

Hier mein bisheriger Code:

Code:
package de.alka1de.gui;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;


public class Gui
{

    private Display display;
    private Shell shell;

    private Image imageDeck;
    private Image imageEmptyDeck;
    private Image imageBackground;
    private Text text_IL;
    private Composite composite1;

    private Menu menueLeiste, startMenue, hilfeMenue;
    private MenuItem startMenueHeader, hilfeMenueHeader;
    private MenuItem spielBeenden, spielStarten, spielanleitung;
    private Label label;
    
    

	

    public Gui()
    {

// ----- Shell Eigenschaften
	display = new Display();
	shell = new Shell(display, SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX);
	shell.setText("U² - ULTIMATE UNO ");
        shell.setMaximized(true);
	shell.setSize(878, 669);
	
// ----- Bilder
	imageDeck = new Image(display, "deck.png");
	imageEmptyDeck = new Image(display, "empty_deck.png");

// ----- Hintergrundbild für das Spielfeld
	shell.setBackgroundImage(new Image(display, "background.gif"));

// ----- Composite für die Spielkarten
	Composite compCards = new Composite(shell, SWT.NULL);
	compCards.setBounds(600, 75, 270, 540);
	compCards.setBackgroundImage(imageBackground);

// ----- Deklaration der Karten
	Button deck = new Button(compCards, SWT.PUSH);
	deck.setBounds(30, 30, 78, 119);
	deck.setImage(imageDeck);
	System.out.println(deck.getImage());

	Button emptyDeck = new Button(compCards, SWT.PUSH);
	emptyDeck.setBounds(150, 30, 78, 119);
	emptyDeck.setImage(imageEmptyDeck);
	System.out.println(emptyDeck.getImage());
	
// ----- Composite für die Textausgabe

// ----- Textareal	
	//shell.setLayout(new GridLayout());
	{
	    composite1 = new Composite(shell, SWT.NONE);
	    {
		text_IL = new Text(shell, SWT.READ_ONLY | SWT.BORDER | SWT.V_SCROLL);
		text_IL.setText("TEXTAUSGABE");
		text_IL.setBounds(270, 75, 330, 540);
	    }
	    composite1.setBounds(0, 75, 270, 540);
	    composite1.setBackgroundImage(imageBackground);
	}

	menueLeiste = new Menu(shell, SWT.BAR);
	startMenueHeader = new MenuItem(menueLeiste, SWT.CASCADE);
	startMenueHeader.setText("Spiel");

	startMenue = new Menu(shell, SWT.DROP_DOWN);
	startMenueHeader.setMenu(startMenue);

	spielStarten = new MenuItem(startMenue, SWT.PUSH);
	spielStarten.setText("Neues Spiel");

	spielBeenden = new MenuItem(startMenue, SWT.PUSH);
	spielBeenden.setText("Beenden");

	hilfeMenueHeader = new MenuItem(menueLeiste, SWT.CASCADE);
	hilfeMenueHeader.setText("Hilfe");

	hilfeMenue = new Menu(shell, SWT.DROP_DOWN);
	hilfeMenueHeader.setMenu(hilfeMenue);

	spielanleitung = new MenuItem(hilfeMenue, SWT.PUSH);
	spielanleitung.setText("Spielanleitung");

	spielBeenden.addSelectionListener(new fileExitItemListener());
	spielStarten.addSelectionListener(new fileSaveItemListener());
	spielanleitung.addSelectionListener(new helpGetHelpItemListener());

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

	display.dispose();
    }

    class fileExitItemListener implements SelectionListener
    {
	public void widgetSelected(SelectionEvent event)
	{
	    shell.close();
	    display.dispose();
	}

	public void widgetDefaultSelected(SelectionEvent event)
	{
	    shell.close();
	    display.dispose();
	}
    }

    class fileSaveItemListener implements SelectionListener
    {
	public void widgetSelected(SelectionEvent event)
	{
	    label.setText("Jetzt geht es los!");
	}

	public void widgetDefaultSelected(SelectionEvent event)
	{
	    label.setText("Jetzt geht es los!");
	}
    }

    class helpGetHelpItemListener implements SelectionListener
    {
	public void widgetSelected(SelectionEvent event)
	{
	    label.setText("Lorem und Ipsum und so...!");
	}

	public void widgetDefaultSelected(SelectionEvent event)
	{
	    label.setText("Lorem und Ipsum und so...!");
	}
    }

    public static void main(String[] args)
    {
	new Gui();

    }

}
 
G

Gastredner

Gast
[c]new Shell(display, SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX)[/c]
Du willst nicht, dass man das Fenster minimieren oder maximieren kann - aber du fügst die entsprechenden Buttons hinzu? Wieso?
 

Saliver

Aktives Mitglied
Prinzipiell richtig, aber ich wollte den native Look des Betriebssystems beibehalten.
Lediglich die Buttons die Funktion verlieren
 

andiv

Bekanntes Mitglied
Das ist ja der Gipfel der Benutzerunfreundlichkeit! Es ist schon unfreundlich das Minimieren/Maximieren zu verbieten. Aber dann auch noch die Buttons anzuzeigen, so dass man sich dumm und dämlich klickt und sich wundert warum nichts passiert. Sorry, aber bei mir als Benutzer hättest du damit gleich mal Minuspunkte.
 

Sonecc

Gesperrter Benutzer
Prinzipiell richtig, aber ich wollte den native Look des Betriebssystems beibehalten.
Lediglich die Buttons die Funktion verlieren

Bin da jetzt nicht ganz so krass, kann die Designentscheidung aber ebenfalls nicht nachvollziehen...
Ansonsten wüsste ich übrigens auch nicht, wie du das ohne Hack schaffen willst.
 

Saliver

Aktives Mitglied
Sicher habe ich mir doch dabei etwas gedacht! Jungs, bitte...

Es wird ein unübersehbarer Knopf zum beenden des Spiels bzw. zur Skalierung des Spielfelds auf der GUI platziert.
Mir gehts aber darum dem Minimierungs-/Maximierungsknopf seiner Funktion zu berauben, um anschließend eine eigene Funktion (als Fullscreen) zu implementieren.

Das ist jedoch ohne "häck" nicht möglich?
 

Sonecc

Gesperrter Benutzer
Warum Buttons anzeigen, die dann nicht funktionieren?
Wenn die Buttons weiterhin funktionieren sollen, du aber das Verhalten ändern willst, gibts dafür Listener (ShellListener fällt mir da ein)

Alles in allem bleibt es dabei, dass es für mich eine nicht nachvollziehbare Designentscheidung ist und das was du vorhast eben nichts anderes als einen Hack nötig machen würde.
 
G

Gastredner

Gast
Wenn du Fullscreen-Betrieb willst: Warum nimmst du nicht die eingebaute Funktionalität [c]SHell.setFullscreen(boolean)[/c]?
 

Ähnliche Java Themen

Neue Themen


Oben