SWT ToolBar Buttons mit Text und Bild

Status
Nicht offen für weitere Antworten.

Sakura

Mitglied
Hi zusammen.

Ich lerne grade für die Schule SWT und habe mir dafür das "SWT: A Developer's Notebook" gekauft.

Nun mache ich das Kapitel ToolBars und versuche eine ToolItem mit sowohl Text als auch Bild anzulegen, der Code ist einfach aus dem Buch übernommen.
Java:
        ToolBar bar = new ToolBar(s, SWT.HORIZONTAL);
        bar.setSize(500, 30);
        bar.setLocation(0, 0);

Image childIco = new Image(d, "C:\\Dokumente und Einstellungen\\cadelt\\Eigene Dateien\\Eigene Bilder\\Basic_set_Win\\document.ico");
        ToolItem child = new ToolItem(bar, SWT.PUSH);
        child.setImage(childIco);
        child.setText("Open Child");

Nur bekomme ich in dem Fall gar kein Button. Wenn ich entweder den Text oder das Bild rausnehme bekomme ich einen entsprechenden Button, nur beides zusammen geht nicht.

Ich habe da im Netz auch nichts dazu gefunden, bei den meisten scheint es zu gehen.
Es wäre echt nett, wenn jemand eine Idee hat, warum das nun bei mir nicht geht. :oops:

Edit: Ich hab noch etwas experimentiert, und ich kann auch nicht mehrere ToolItems mischen. Wenn ich ein Item mit Text und eines mit Bild habe, wird die ToolBar auch gar nicht dargestellt.
Gleiches gilt wenn ich ein Item mit Bild oder Text habe und ein weiteres mit beidem...
 
Zuletzt bearbeitet:
G

Gast2

Gast
Hi,

dir fehlt bestimmt sowas
Java:
        ActionContributionItem item = new ActionContributionItem(actionHome);
        item.setMode(ActionContributionItem.MODE_FORCE_TEXT);

Hier mal ein bsp.
Java:
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Decorations;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;

public class TestToolBar {

    Display display = new Display();
    Shell shell = new Shell(display);

    public TestToolBar() {
        MenuManager menuManager = new MenuManager();

        ToolBar toolBar = new ToolBar(shell, SWT.FLAT | SWT.RIGHT);
        final ToolBarManager manager = new ToolBarManager(toolBar);

        // Adds tool bar items using actions.
        // final Action actionForward =
        // new Action(
        // "&Forward",
        // ImageDescriptor.createFromFile(
        // null,
        // "icons/web/forward.gif")) {
        // public void run() {
        // System.out.println("FORWARD");
        // }
        // };
        // actionForward.setAccelerator(SWT.CTRL + 'F');

        Action actionHome = new Action("&Home", ImageDescriptor.createFromFile(null, "eclipse.gif")) {

            public void run() {
                System.out.println("HOME");
            }
        };
        actionHome.setAccelerator(SWT.CTRL + 'H');

        // manager.add(actionForward);

        ActionContributionItem item = new ActionContributionItem(actionHome);
        item.setMode(ActionContributionItem.MODE_FORCE_TEXT);
        manager.add(item);

        manager.update(true);
        toolBar.pack();

        MenuManager fileMenuManager = new MenuManager("&File");
        // fileMenuManager.add(actionForward);
        fileMenuManager.add(actionHome);
        menuManager.add(fileMenuManager);
        menuManager.updateAll(true);
        shell.setMenuBar(menuManager.createMenuBar((Decorations) shell));

        shell.pack();
        shell.open();
        // textUser.forceFocus();

        // Set up the event loop.
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                // If no more entries in event queue
                display.sleep();
            }
        }

        display.dispose();
    }


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

Solche SWT Bsp findest du hier

SWT JFace EclipseJava

Aber ich bin mir sicher mit Toolbar SWT und google hättest du das auch geschafft ;)

EDIT: ich weiß nicht ob SWT ico unterstützt...
 

Sakura

Mitglied
Hm, das macht das Ganze aber ziemlich kompliziert und im Buch steht das mit keinem Wort drin. Schon komisch, ich fand O'Reilly immer verdammt gut. Aber falscher Code in einem Lehrbuch geht gar nicht. :noe:
Dann werd ich mir mal JFace runterladen müssen und mich da mal reinwuseln.

Und ich habe durchaus google benutzt, aber nur einen Blogeintrag von vor 5 Jahren gefunden, der das Problem angesprochen hat. Ich bin davon ausgegangen, dass der schon massiv veraltet wäre...
 
G

Gast2

Gast
Vielleichts gehts auch anders keine Ahnung, aber ich würde SWT immer mit JFace zusammen benutzen... Ist doch viel komfortabler...
 

Sakura

Mitglied
Wir machen in der Schule erstmal nur SWT. Alleine das wir unseren Lehrer maßlos überfordern, also komme ich ihm lieber nicht noch mit JFace.

Dieser Beispielcode ist dann ja auch wieder was ganz anderes, als was ich da im Buch stehen habe, mit neuem Actionlistener und allem... Geht zwar, aber dann müsste ich wieder alles wieder umschreiben, und könnte es in der Schule trotzdem nicht nutzen.

Wenn also jemand eine Lösung nur mit SWT hat wäre ich doch sehr verbunden.
 
G

Gast2

Gast
dann halt nur SWT

Java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;

public class TestToolBar {

  public static void main(String[] args) {
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setSize(300, 200);
    shell.setText("Toolbar Example");

    ToolBar toolbar = new ToolBar(shell, SWT.FLAT);
    toolbar.setBounds(0, 0, 200, 70);

    ToolItem toolItem1 = new ToolItem(toolbar, SWT.PUSH);
    toolItem1.setText("Save");
    toolItem1.setImage(new Image(null, "eclipse.gif"));
    ToolItem toolItem2 = new ToolItem(toolbar, SWT.PUSH);
    toolItem2.setText("Save As");
    ToolItem toolItem3 = new ToolItem(toolbar, SWT.PUSH);
    toolItem3.setText("Print");
    ToolItem toolItem4 = new ToolItem(toolbar, SWT.PUSH);
    toolItem4.setText("Run");
    ToolItem toolItem5 = new ToolItem(toolbar, SWT.PUSH);
    toolItem5.setText("Help");

    final Text text = new Text(shell, SWT.BORDER);
    text.setBounds(55, 80, 200, 25);

    Listener toolbarListener = new Listener() {
      public void handleEvent(Event event) {
        ToolItem toolItem = (ToolItem) event.widget;
        String caption = toolItem.getText();
        text.setText("You clicked " + caption);
      }
    };

    toolItem1.addListener(SWT.Selection, toolbarListener);
    toolItem2.addListener(SWT.Selection, toolbarListener);
    toolItem3.addListener(SWT.Selection, toolbarListener);
    toolItem4.addListener(SWT.Selection, toolbarListener);
    toolItem5.addListener(SWT.Selection, toolbarListener);

    shell.open();

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}
 

qwertzu222

Mitglied
Hallo,
das Beispiel von SirWayne ist sicherlich gut.
Was mich allerdings noch etwas plagt, dass es bei mir in diesem und in allen anderen Snippets actions werden nicht durch Tastenkombinationen ausgelöst. Per Mausklick ja -Tasten nicht.
Wenn ich aber mit MenuItem so was schreibe
Java:
saveItem.setAccelerator (SWT.F4);
funktioniert anstandslos.
Weiss jemand vielleicht was da nicht stimmt?
 
G

Gast2

Gast
Java:
    MenuItem test = new MenuItem(fileMenu, SWT.CASCADE);
    test.setAccelerator(SWT.CTRL + 'T');
    test.setText("Test");
 

qwertzu222

Mitglied
ich meinte dein Beispiel mit Action. Bei mir funktioniert nicht Auslösung per Tastatur.
mit MenuItems, wie in zweitem Beispiel, wird auf Tastatur reagiert.
 
G

Gast2

Gast
Weiß nicht was du meinst aber sowas funktioniert bei mir wunderbar
Java:
package hnj;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;


public class Test extends ApplicationWindow {


	public Test(Shell parentShell) {
		super(parentShell);
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		Display display = new Display();
		Shell aShell = new Shell(display);
		Test application = new Test(aShell);
		application.createComponents();
		application.open();
	}

	public void createComponents() {
		
		addMenuBar();
		createMenuBar();
		setBlockOnOpen(true);

	};

	private void createMenuBar() {
		getMenuBarManager().add(createHelpMenu());
	}

	private MenuManager createHelpMenu() {
		MenuManager menu = new MenuManager("Help", "Id01");
		Action action = new Action("test") {
			@Override
			public void run() {
				System.out.println("Test");
			}
		};
		menu.add(action);
		action.setAccelerator(SWT.CTRL + 'T');
		return menu;
	}

	protected Point getInitialSize() {
		return new Point(600, 400);
	}

	protected Point getInitialLocation() {
		return new Point(600, 400);
	}

	
}
 

qwertzu222

Mitglied
OK,
jetzt geht es.
Vermutlich liegt es an einem aber feinem Unterschied. Nämlich:
das erste Beispiel ist reines SWT Programm, das dritte ist ein JFace :toll:
Java:
public class Test extends ApplicationWindow
Das erste Beispiel hab ich auf zwei Systemen getestet: XP und Win7, dazu Eclipse 3.5.2 und 3.6 keine Reaktion auf Tastatureingaben.
Danke dir für deine Mühe.
 
Zuletzt bearbeitet:
G

Gast2

Gast
Wie willst du auch in reinem SWT eine JFace Action in eine Menü reinbekommen? Das geht gar nicht!!!
Außerdem steht doch in der Doku dass du glaub immer SWT.ALT oder CTRL o.ä benutzen musst
 

qwertzu222

Mitglied
Wie willst du auch in reinem SWT eine JFace Action in eine Menü reinbekommen? Das geht gar nicht!!!
So wie es in deinem Bsp steht. Denke ich
Außerdem steht doch in der Doku dass du glaub immer SWT.ALT oder CTRL o.ä benutzen musst
jetzt stehe ich auf dem Schlauch.
Java:
public class Test extends ApplicationWindow{

...
private void createActionTest(String titel) {
		actionTest = new Action("test") {
			@Override
			public void run() {
				System.out.println("Test 0");
			}
		};;
		actionTest.setImageDescriptor(ImageDescriptor.createFromFile(null,"3floppy_mount.png"));
		actionTest.setId("test0");
	}

	private void createActionTest1(String titel) {
		actionTest1 = new Action("test 1") {
			@Override
			public void run() {
				System.out.println("Test 1");
			}
		};;
		actionTest1.setImageDescriptor(ImageDescriptor.createFromFile(null,"folder_yellow.png"));
		actionTest1.setId("test1");
	}

	private MenuManager createHelpMenu() {
		MenuManager menu = new MenuManager("Help", "Id01");
		createActionTest("test");
		createActionTest1("test 1");
		actionTest.setAccelerator(SWT.CTRL + 'T');
		actionTest1.setAccelerator(SWT.F4);
		menu.add(actionTest);
		menu.add(actionTest1);
		return menu;
	}

...
}
dein letzter Bsp., ein wenig modifiziert, lässt per F4 ein Action aufrufen.

Sets the accelerator keycode that this action maps to. This is a bitwise OR of zero or more SWT key modifier masks
Spricht nichts gegen Funktionstasten,
aber es hat auch niemand behauptet - oder doch? :noe:
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
dzim Toolbar - Problem bei enable/disable von Buttons AWT, Swing, JavaFX & SWT 6
B Buttons in Toolbar einbinden AWT, Swing, JavaFX & SWT 6
G Abstand zwischen den Buttons in einer Toolbar AWT, Swing, JavaFX & SWT 3
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
E JavaFX MenuBar und ToolBar zu einem Bereich AWT, Swing, JavaFX & SWT 3
T JavaFX Toolbar resizable AWT, Swing, JavaFX & SWT 4
I Toolbar AWT, Swing, JavaFX & SWT 27
A AWT Java Toolbar AWT, Swing, JavaFX & SWT 6
P SWT Toolbar mit nur einer Schaltfläche und einem Textfeld AWT, Swing, JavaFX & SWT 2
B Applet Button oder Toolbar in einem Applet AWT, Swing, JavaFX & SWT 5
C Swing Toolbar zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 5
padde479 Suche eine Komponente (->ToolBar) AWT, Swing, JavaFX & SWT 7
S SWT perspektive mit toolbar oder eventkomponente AWT, Swing, JavaFX & SWT 3
C Swing Andocken einer ToolBar verhindern AWT, Swing, JavaFX & SWT 3
S Dropdown-Menü wie auf der Eclipse-Toolbar AWT, Swing, JavaFX & SWT 7
G Verliere Referenz von Toolbar bei mehreren Fenster AWT, Swing, JavaFX & SWT 3
W SWING - Aktionen in Toolbar hinzufügen AWT, Swing, JavaFX & SWT 2
B Toolbar, Toolbar In Toolbar, alterna zu JToolbar AWT, Swing, JavaFX & SWT 3
G SWT Toolbar: Toolitem entfernen und wieder hinzufügen AWT, Swing, JavaFX & SWT 16
S ToolBar in GridbagLayout AWT, Swing, JavaFX & SWT 5
S Toolbar wie im Explorer? oder mozilla erstellen AWT, Swing, JavaFX & SWT 5
S Tooltip auf Toolbar-Icon AWT, Swing, JavaFX & SWT 6
G Toolbar AWT, Swing, JavaFX & SWT 5
B PNG-Icons in Toolbar einbinden AWT, Swing, JavaFX & SWT 3
masta // thomas Toolbar wie in MacOS? AWT, Swing, JavaFX & SWT 13
M Toolbar Layout AWT, Swing, JavaFX & SWT 7
K Desktop toolbar Problem AWT, Swing, JavaFX & SWT 2
G Toolbar hat zuviel zwischenraum AWT, Swing, JavaFX & SWT 2
B Toolbar und Java-Versionen AWT, Swing, JavaFX & SWT 6
W ToolBar und StandardButtons AWT, Swing, JavaFX & SWT 9
S toolbar - flowlayout problem AWT, Swing, JavaFX & SWT 5
S Toolbar in einem BorderLayout verschieben AWT, Swing, JavaFX & SWT 4
G Toolbar mit Toolbuttons AWT, Swing, JavaFX & SWT 7
J Separator zwischen den einzelnen Symbolen in der Toolbar AWT, Swing, JavaFX & SWT 4
javasdann Icon in Toolbar ändern. AWT, Swing, JavaFX & SWT 4
javasdann MDI Problem mit Toolbar und Statusleiste. AWT, Swing, JavaFX & SWT 2
J Drop-down menü in Toolbar Button AWT, Swing, JavaFX & SWT 8
K toolbar dynamisch erzeugen AWT, Swing, JavaFX & SWT 2
A Bestes Layout für die Toolbar AWT, Swing, JavaFX & SWT 7
L Swing: Toolbar-Problem AWT, Swing, JavaFX & SWT 3
B Zugriff von Toolbar auf zugehörigen Frame AWT, Swing, JavaFX & SWT 6
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
jojoge Wie erstelle ich runde Buttons mit Farbe? AWT, Swing, JavaFX & SWT 1
berserkerdq2 Buttons und Shapes sehen ja nach Screengröße klein oder zu groß aus, jemand eine Idee, was man tun kann? AWT, Swing, JavaFX & SWT 1
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
volcanos SpringLayout mit zusätzlichen Buttons außerhalb des SpringLayout AWT, Swing, JavaFX & SWT 33
K Swing Buttons erst blinken lassen und dann abfragen, ob sie gedrückt worden sind AWT, Swing, JavaFX & SWT 2
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
O Swing JOptionPane.showOptionDialog - Wie kann ich Buttons größer machen AWT, Swing, JavaFX & SWT 10
R mehrere buttons mit forschleife kreieren und individuell bearbeiten AWT, Swing, JavaFX & SWT 1
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
B JavaFX DropDown Menu mit ausführbaren Buttons AWT, Swing, JavaFX & SWT 1
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
K Buttons dynamisch erstellen (NetBeans) AWT, Swing, JavaFX & SWT 10
S Kreis vergrößern/verkleinern mit Buttons AWT, Swing, JavaFX & SWT 1
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
J TicTacToe Buttons AWT, Swing, JavaFX & SWT 14
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
C Buttons funtionieren nicht AWT, Swing, JavaFX & SWT 10
S SWT neues Fenster, buttons aus alten etc... AWT, Swing, JavaFX & SWT 0
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
Neumi5694 Sprache der Standard-Buttons AWT, Swing, JavaFX & SWT 7
Timo_neu_in_java Buttons Erstellen AWT, Swing, JavaFX & SWT 6
H JavaFX TableCell mit Buttons AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
kilopack15 Buttons ohne Funktion AWT, Swing, JavaFX & SWT 2
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
T Buttons auf Tablet viel kleiner als am PC AWT, Swing, JavaFX & SWT 0
S Buttons und TextField automatisch vergrößern AWT, Swing, JavaFX & SWT 8
R 2D-Grafik Buttons mit Slick2D und LWJGL AWT, Swing, JavaFX & SWT 2
J JavaFX Buttons mit Array erzeugen AWT, Swing, JavaFX & SWT 1
JG12111989 Buttons funktionieren nicht AWT, Swing, JavaFX & SWT 4
A Swing Buttons werden trotz setVisible nicht dargestellt AWT, Swing, JavaFX & SWT 14
M Buttons in JSplitPane hinzufügen AWT, Swing, JavaFX & SWT 6
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
I JavaFX Langes drücken eines Buttons AWT, Swing, JavaFX & SWT 4
I JavaFX Buttons und TableView AWT, Swing, JavaFX & SWT 2
K Swing Durch Methode erzeugte Buttons ansteuern AWT, Swing, JavaFX & SWT 5
D Buttons werden nebeneinander angeordnet AWT, Swing, JavaFX & SWT 9
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
D JavaFX Dynamisch erzeugte Buttons sollen Code ausführen. AWT, Swing, JavaFX & SWT 2
D Buttons erscheinen nicht auf Frame AWT, Swing, JavaFX & SWT 2
M 4-Gewinnt mit Buttons AWT, Swing, JavaFX & SWT 1
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
K Swing Keine Reaktion auf Tastatureingaben bei mehreren Buttons??? AWT, Swing, JavaFX & SWT 4
wolfgang63 JavaFX Transparenter Hintergrund aber sichtbare Buttons AWT, Swing, JavaFX & SWT 6
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben