Plug-in: Wie JButton einfügen?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich habe ein vorgefertigtes Hello-World-plugin von Eclipse erstellen lassen.
Wie füge ich ein JButton in das "Hello,Eclipse world"-Fenster ein? Und wie lautet der Code um einen Button-Listener zu erstellen?

Code:
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.jface.dialogs.MessageDialog;

public class SampleAction implements IWorkbenchWindowActionDelegate {
	private IWorkbenchWindow window;
	
	/**
	 * The constructor.
	 */
	public SampleAction() {
	}

	public void run(IAction action) {
		MessageDialog.openInformation(
			window.getShell(),
			"Plugin_test Plug-in",
			"Hello, Eclipse world");
	}

	public void selectionChanged(IAction action, ISelection selection) {
	}

	public void dispose() {
	}

	public void init(IWorkbenchWindow window) {
		this.window = window;
	}
}
 

Wildcard

Top Contributor
Grundsätzlich kannst du schon Swing verwenden, allerdings nur wenn du ein eigenes Composite platzieren kannst.
Davon abgesehen ist Swing in SWT durchaus problematisch durch synchronisations und Fokus Probleme und sollte wenn möglich vermieden werden.
 
G

Guest

Gast
Anonymous hat gesagt.:
Was willst du mit einem JButton in SWT? :lol:
Ok, ich denk ich hab verstanden. Swing Elemente können nicht mit SWT Elementen gemixt werden.

Wie füg ich also einen Button in den obigen SWT Plugin Code ein? Inklusive Button-Listener?

Danke für den RCP-Link. Werde mich damit auseinandersetzen müssen.
Ja wie, Swing-GUI-handcoder müssen dann SWT-GUI coding wieder komplett neu erlernen?
 
G

Guest

Gast
Wildcard hat gesagt.:
Grundsätzlich kannst du schon Swing verwenden, allerdings nur wenn du ein eigenes Composite platzieren kannst.
Was ist Composite? Hmm, ist das platzieren aufwendig? Bzw. wie funktioniert das. Bzw. hast du einen Link dazu?

Jedenfalls danke Jungs. Jetzt weis ich wenigstens man am besten einen SWT-Button ins Plugin einfügen sollte. Aber wie lautet der Code dazu?
Und die Layoutmanager heißen bei SWT dann auch komplett anders als in Swing? Aber das Prinzip ist ja wohl sicherlich dasselbe?
 

Wildcard

Top Contributor
Anonymous hat gesagt.:
Anonymous hat gesagt.:
Ja wie, Swing-GUI-handcoder müssen dann SWT-GUI coding wieder komplett neu erlernen?
SWT ist zwar eine Umstellung, aber ganz so tragisch ist es nicht.

Diese MessageDialog Klasse ist die SWT JOptionPane. Der Standarddialog den du mit openInformation öffnest ist daher auch nicht wirklich dazu gedacht eigene Controls einzufügen. Schau dir am besten ein SWT Tutorial an.
 

Wildcard

Top Contributor
Anonymous hat gesagt.:
Was ist Composite? Hmm, ist das platzieren aufwendig? Bzw. wie funktioniert das. Bzw. hast du einen Link dazu?
Ein Composite ist in etwa das, was in Swing ein JPanel ist. Ein wichtiger unterschied zu Swing ist, das in Swing Kinder explizit hinzugefügt werden und in SWT implizit.
Bei Swing hast du also immer:
Code:
JButton button = new JButton();
panel.add(button);
Bei SWT braucht jedes Control einen Parent und fügt sich dann selbst als Kind ein:
Code:
Button button = new Button(panel,SWT.PUSH);


Anonymous hat gesagt.:
Und die Layoutmanager heißen bei SWT dann auch komplett anders als in Swing? Aber das Prinzip ist ja wohl sicherlich dasselbe?
Sie heißen ähnlich. Der wichtigste in SWT ist GridLayout. Etwa so mächtig wie Swings GridBagLayout, aber einfacher zu verwenden.
 
G

Guest

Gast
Wildcard hat gesagt.:
Der Standarddialog den du mit openInformation öffnest ist daher auch nicht wirklich dazu gedacht eigene Controls einzufügen.
Was sollte also anstatt eines Standarddialogs verwendet werden um eigene Controls wie Buttons, Labels, ... einzufügen?
 

Wildcard

Top Contributor
Nun, du könntest zB von MessageDialog erben, oder einen JFace Dialog instanzieren (wie JDialog).
 
G

Guest

Gast
Anonymous hat gesagt.:
Du findest unter http://www.java2s.com jede Menge Beispiele zu SWT/JFace (siehe unter "SWT JFace Eclipse").
Auch die Beispiele unter http://www.eclipse.org/swt/snippets/ sind sehr hilfreich.
Supi, die haben dort viele Button-Codes, und es hat geklappt. :)

Jetzt fehlt nur noch, dass in meinen Listning meiner ersten Post statt des MessageDialog ein Fenster mit einem Button gezeigt wird, nämlich das Buttonfenster dieses Codes:

Code:
package pluginbutton.actions;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

/**
 * @author Steven Holzner
 * 
 * To change the template for this generated type comment go to
 * Window&Preferences&Java&Code Generation&Code and Comments
 */
public class ButtonClass {

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

    final Button button = new Button(shell, SWT.PUSH);
    button.setBounds(40, 50, 50, 20);
    button.setText("Click Me");

    final Text text = new Text(shell, SWT.BORDER);
    text.setBounds(100, 50, 70, 20);

    button.addSelectionListener(new SelectionListener() {

      public void widgetSelected(SelectionEvent event) {
        text.setText("No problem");
      }

      public void widgetDefaultSelected(SelectionEvent event) {
        text.setText("No worries!");
      }
    });

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

Ich habe also Zeile 17-20 (Message-Dialog-Code) meines ersten Listings gelöscht, und an dieser Stelle Zeile 20-48 des hier aufgeführten Codes eingefügt. Statt dem Fenster mit dem Button erscheint aber gar kein Fenster! Wie müsste man es also richtig machen?
 

Wildcard

Top Contributor
Der Snippet ist dafür nicht zu gebrauchen, da du kein neues Display brauchst und erst recht keinen neuen SWT Dispatcher Thread. Das ist für Standalone SWT Anwendungen.
 
G

Guest

Gast
Wildcard hat gesagt.:
Der Snippet ist dafür nicht zu gebrauchen, da du kein neues Display brauchst und erst recht keinen neuen SWT Dispatcher Thread. Das ist für Standalone SWT Anwendungen.

Wenn ich also keinen Dispatch-Thread (wozu das immer auch gut sein mag) brauch, dann nehm ich an dass die folgenden Zeilen gelöscht werden können:
Code:
shell.open();
while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
}
display.dispose();

Das Snipplet ist nicht zu gebrauchen? Aber zumindest größtenteils zu gebrauchen? Wie müsste ich also das Snipplet abändern?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D java(tm) plug-in ssv helper Allgemeine Java-Themen 0
H WebStart und plug-in Allgemeine Java-Themen 3
juppi Java-plug-in mit Application ansteuern Allgemeine Java-Themen 2
R Java Plug-in für Netscape 7.1 Allgemeine Java-Themen 2
N JButton Konflikt mit Graphics Allgemeine Java-Themen 14
F JButton und ActionListener Allgemeine Java-Themen 3
H Schiffe versenken JButton Schiffe mit GUI verbinden Hilfe! Allgemeine Java-Themen 2
Aruetiise Interface Position durch JButton ermitteln Allgemeine Java-Themen 5
Aruetiise LayoutManager JButton in den Hintergrund Allgemeine Java-Themen 7
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
D AWT JButton und KeyAdapter Allgemeine Java-Themen 1
M JButton setEnabled(false) seltsames Ereignis Allgemeine Java-Themen 1
R via JButton in JTextArea printen Allgemeine Java-Themen 2
S Mit einem jButton eine andere Klasse öffnen Allgemeine Java-Themen 2
H JButton Ursprungsfarbe Allgemeine Java-Themen 2
Developer_X JButton Aktion Allgemeine Java-Themen 5
Developer_X JButton soll gar nichts machen Allgemeine Java-Themen 8
G Serialisieren eines JButton mit Icon Allgemeine Java-Themen 8
G JButton Allgemeine Java-Themen 7
S eigene Klasse die JButton extended - als Liste! Allgemeine Java-Themen 6
P JButton klonen Allgemeine Java-Themen 8
P JButton dnd Allgemeine Java-Themen 29
M Swing JButton Farbe zurücksetzen Allgemeine Java-Themen 6
O JButton oder Checkboxes als Array ? Allgemeine Java-Themen 3
T Allgemeinklasse zu JPanel, JButton. Allgemeine Java-Themen 26
P eigener Thread für einen JButton Allgemeine Java-Themen 32
E JButton bleibt in der JTable Allgemeine Java-Themen 2
E JButton in einer Zelle von JTable Allgemeine Java-Themen 16
S JButton als Hyperlink ? Allgemeine Java-Themen 32
MQue JButton erkennen Allgemeine Java-Themen 2
MQue JButton an verschiedenen Variablen Allgemeine Java-Themen 2
MQue JButton zu JPanel hinzufügen Allgemeine Java-Themen 7
B Vermeiden das JButton schneller hintereinander drücken Allgemeine Java-Themen 3
G Hilfe - JButton in JTable (Spalte) einfügen! Allgemeine Java-Themen 6
M JButton verursacht einen HeapSpace Error? Allgemeine Java-Themen 6
N JList mit Mausklick auf einen JButton scrollen Allgemeine Java-Themen 28
thE_29 JButton einfärben Allgemeine Java-Themen 10
C In DefaultTableModel nachträglich Werte einfügen Allgemeine Java-Themen 2
A Java ListNode Element einfügen ohne Bibliothek Allgemeine Java-Themen 6
S Link element an vorletzte stelle einfügen Allgemeine Java-Themen 2
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
G JTextField Inhalt in einem Long einfügen Allgemeine Java-Themen 2
G Excel Tabelle lesen und in neue Excel Tabelle einfügen Allgemeine Java-Themen 11
S Wo .close() einfügen? Allgemeine Java-Themen 0
I Apache POI Word Text einfügen Allgemeine Java-Themen 26
K Swing OpenStreetMap in JFrame einfügen Allgemeine Java-Themen 1
B Eclipse Ekit-Editor einfügen Allgemeine Java-Themen 0
T Neuen Kanal in Bild (TIFF) einfügen à la Photoshop Allgemeine Java-Themen 2
D Symbol in Word-Dokument einfügen Allgemeine Java-Themen 1
N Automatisches einfügen einer selbst generierten ID in Klasse mit Annotation Allgemeine Java-Themen 8
F 2D Array in jList einfügen Allgemeine Java-Themen 8
J XML Dokument Zeilenumbruch in den Quellcode einfügen Allgemeine Java-Themen 5
H Semicolon Einfügen JSP Seite Allgemeine Java-Themen 9
K Neue Elemente in JList einfügen Allgemeine Java-Themen 2
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
Z Sortiertes Einfügen in doppelt verkettete Liste Allgemeine Java-Themen 5
S Text in for Schleife in Label einfügen Allgemeine Java-Themen 4
S JPanel einfügen in MainClass Allgemeine Java-Themen 4
R Schnelles Einfügen in SortedSet Allgemeine Java-Themen 11
Z Ausschneiden, Kopieren, Einfügen, Löschen in JTextArea Allgemeine Java-Themen 5
JAVAnnik Bilder in JLabel Array einfügen Allgemeine Java-Themen 2
E Bild mit Listener einfügen Allgemeine Java-Themen 3
reibi Leeres Verzeichnis in ein Zipfile einfügen Allgemeine Java-Themen 12
N Tupel in eine SET einfügen Allgemeine Java-Themen 3
S Progressbar einfügen Allgemeine Java-Themen 4
W xml File einlesen und in eine andere xml File einfügen.. Allgemeine Java-Themen 2
L List <Hauser> in Combobox einfügen Allgemeine Java-Themen 5
D Kopieren und Einfügen Allgemeine Java-Themen 8
D Einfügen über JMenuBar Allgemeine Java-Themen 4
N einfügen string in methode Allgemeine Java-Themen 10
R doppelt verkettete Liste: Fehler beim Einfügen Allgemeine Java-Themen 3
G Zeile einfügen in TreeTable Allgemeine Java-Themen 2
G Teilstring in einen String einfügen Allgemeine Java-Themen 5
G Tabelleneintrag einfügen Allgemeine Java-Themen 10
P JTree/ Nodes einfügen Allgemeine Java-Themen 2
A FileChannel: Mitten in eine Datei was einfügen Allgemeine Java-Themen 2
W Daten in Access einfügen über Java Allgemeine Java-Themen 21
G Plugin (Visual Editor) in Eclipse einfügen Allgemeine Java-Themen 2
Zed JList Object einfügen und Text anzeigen Allgemeine Java-Themen 3
P Timestamp in eine Firebird-Datenbank einfügen Allgemeine Java-Themen 6
K Bilder mit Java in MS Word einfügen Allgemeine Java-Themen 2
M Text in JTextfield einfügen sofort dann wird Text gekürzt Allgemeine Java-Themen 2
H html datein einfügen Allgemeine Java-Themen 7
M Pfeilzeichen (z.B. ALT + 26) einfügen Allgemeine Java-Themen 2
S Bild aus Zwischenablage in Applet einfügen Allgemeine Java-Themen 2
R Frage zu einfügen in generische lineare Liste Allgemeine Java-Themen 7
S Werte in Tabelle einfügen! Allgemeine Java-Themen 9
N Zeilenumbruch in String nach jeweils x Zeichen einfügen? Allgemeine Java-Themen 6
G Text cursorgenau einfügen [ehemals hilfe ... dringend] Allgemeine Java-Themen 7
S addAtPosition - Zahl an einer bestimmten Position einfügen Allgemeine Java-Themen 8
G wie Klasse in JFrame "einfügen" Allgemeine Java-Themen 12
D iText: Tabelle in Footer einfügen Allgemeine Java-Themen 6
G Einfügen von Werten aus TXT-Datei in ein Array !?! Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben