MessageDialog modifizieren

Goliath83

Grünschnabel
Hallo, ich habe eine Frage zum MessageDialog in SWT.

Der MessageDialog ist ja beim RCP recht gut vorbereitet, nur habe ich ein kleines Problem und weiß im Moment nicht wie ich das lösen könnte.

Ich rufe den Standard-Dialog so auf:
Code:
MessageDialog.openQuestion(parent, dialogTitle, dialogMessage);

Mein Problem:
Es sind zwei Buttons dabei ("Yes" und "No") und denen möchte ich gerne eine andere Beschriftung geben z.B. "Speichern" und "Abbrechen". Kann ich auf die Titel der Buttons irgendwie zugreifen oder muss ich mir meinen eigenen Dialog erstellen?


Vielen Dank
 
Zuletzt bearbeitet:
"Speichern " geht nicht, nur "Abbrechen" ist vordefiniert, falls du eine deutsch sprachiges OS benutztst. http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/JFacesMessageDialog.htm

Fals du wirklich auf deine eigenen bezeichener benutzen willst, Dann baue am besten eine eigen unterklasse von Dialog. etwa so (ist jetzt ein einfacher eingabe dialog)

/*
* Created on 26.05.2006
*/
package guiPhoneBook;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Button;

public class InputDialog /*extends Dialog*/ {
String result;

private Shell sShell = null; // @jve:decl-index=0:visual-constraint="122,39"
private Label label = null;
private Button button = null;
private Button button1 = null;
private Text text = null;

/**
* This method initializes sShell
*/
private void createSShell() {
sShell = new Shell(SWT.BORDER | SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
sShell.setText("InputDialog");
sShell.setMaximized(false);
sShell.setMinimized(false);
sShell.setSize(new org.eclipse.swt.graphics.Point(300,144));
label = new Label(sShell, SWT.NONE);
label.setBounds(new org.eclipse.swt.graphics.Rectangle(12,13,111,22));
label.setText("Eingabe");
button = new Button(sShell, SWT.NONE);
button.setBounds(new org.eclipse.swt.graphics.Rectangle(12,80,80,23));
button.setText("OK");
button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
// System.out.println("widgetSelected()"); // TODO Auto-generated Event stub widgetSelected()
result = text.getText();
sShell.close();
}
});
button1 = new Button(sShell, SWT.NONE);
button1.setBounds(new org.eclipse.swt.graphics.Rectangle(200,80,82,23));
button1.setText("close");
button1.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
// System.out.println("widgetSelected()"); // TODO Auto-generated Event stub widgetSelected()
sShell.close();
}
});
text = new Text(sShell, SWT.BORDER);
text.setBounds(new org.eclipse.swt.graphics.Rectangle(12,45,270,25));
}



public String open() {
createSShell();
sShell.open();
Display display = Display.getDefault();
while (!sShell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
return result;
}
public String open(String initial) {
createSShell();
sShell.open();
Display display = Display.getDefault();

text.setText(initial); // *** myself

while (!sShell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
return result;
}


Die

}
 
Ganz einfach : Du kannst eigenen Dialog bauen:

public boolean openGermanQuestionDialog(Shell parentShell, String title, String message) {
return new MessageDialog(parentShell, title, null, message, 3, new String[] {
"Speichern", "Abbrechen" }, 0).open() == 0;
}
 
Das Thema ist zwar schon etwas älter aber ich habe dazu auch eine Frage. Wie können die entsprechenden Listener des MessageDialog implementiert werden?
 
Hallo Lord_Aratorn,
hier ist ein Beispiel, um zu wissen welechen Button geklickt wurde, dann kannst du abhängig davon alles machen:

MessageDialog messageDialog = new MessageDialog(parentShell, "MessageDialog", null,
"Message", MessageDialog.ERROR,
new String[] { "Speichern", "Abbrechen" }, 1);
if (messageDialog.open() == 0) {
//Do some thing
System.out.println("Speichern Button wurde geklickt.");
}else if (messageDialog.open() == 1) {
//Do some thing
System.out.println("Abbrechen Button wurde geklickt.");
}
 
Zuletzt bearbeitet:
Freunde ... habt ihr schonmal was von CODE-Tags gehört ?
Und ganz speziell für Java gilt : [code=java]CODE[/code]

Das sieht so einfach nicht schön aus und viele von uns *mich eingeschlossen* weigern sich einfach sowas auch nur anzusehen ...
 
Zurück