Wie SWT Style von button herausbekommen

Miriam84

Grünschnabel
Hallo,

ich weiß dieses frage gab es schon, aber leider hat mir die Antwort irgendwie nicht weitergeholfen.
Wie erkenne ich bei einem SWT.Button ob es ein Pushbutton, Radiobutton oder eine Checkbox ist. Ich habe es mit getStyle versucht. Dabei bekomme ich auch einen int-wert raus nur wenn ich dann prüfe ob getStyle gleich einem der SWT Styles ist scheitere ich. Ich vermute mal das liegt daran das ja auch mehrere Styles gesetzt werden können. Also wie komme ich in meinem Fall zu dem einem Styletyp. Ich wollte das ganze in einer case-Schleife abprüfen.

Java:
 switch (button.getStyle())
        {
	        case SWT.PUSH:
	        {
	        	return "PushButton";
	        }	       
	        case SWT.CHECK:
	        {
	        	return "CheckButton";
	        }
	        case SWT.RADIO:
	        {
	        	return "Radioutton";	        	
	        }
	        case SWT.TOGGLE:
	        {
	        	return "ToggleButton";	        	
	        }
	        case SWT.ARROW:
	        {
	        	return "ArrowButton";	        	
	        }
	        default:
	        {
	        	return null;
	        } 
       }
 
Moin,

ich weiß nicht genau, ob es Dir weiterhilft, aber ich prüfe hier immer die Objekteigenschaft in dieser Form:

Code:
Object theObject;
...
if (getObjectClassName(theObject).equals("javax.swing.JButton"))
// oder 
if (theObject instanceof javax.swing.JButton)

Gruß
Klaus
 
Hallo,

danke für die schnelle Antwort aber das hilft mir leider nicht, weil ja alle Instanzen der klasse org.eclipse.swt.widgets.Button sind. Die Unterscheidung ob radiobutton oder Chckbox kommt durch das setzen der Style-Bits.
 
Moin,

ach so, die Logik kenne/nutze ich leider nicht ....

Ich habe es mit getStyle versucht. Dabei bekomme ich auch einen int-wert raus nur wenn ich dann prüfe ob getStyle gleich einem der SWT Styles ist, scheitere ich.

Aber was genau wird Dir denn zurückgeben resp. woran genau scheiterst Du :confused:
Ist "button" genau ein spezieller Button? Dann sollte das Ergebnis doch eigentlich eindeutig sein ....

Oder Du müsstet mal mit einem Bitvergleich prüfen, ob Dein int-Wert das Bit für den gesuchten Style enthält!

Gruß
Klaus
 
Jede SWT Komponente kann mehrere Bits gesetzt haben. Der style ist ein Bitset.

Um zu prüfen ob das Bit gesetzt ist:
Java:
(button.getStyle() & SWT.PUSH) != 0

Oder besser lesbar als Methode:
Java:
public static final isBitSet(bitset, bit) {
    return (bitset & bit) != 0;
}

isBitSet(button.getStyle(),SWT.PUSH)
 
Zurück