Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Mahlzeit, gibt es irgendwie die Möglichkeit eine Klasse von der InputDialog-Klasse abzuleiten und noch einen KeyListener mit zu integrieren, der auch funktioniert???
Welche funktion muss ich dafür überschreiben, bzw. erweitern???
Ich habe schon alles ausprobiert, aber keine Lösung gefunden.
Ich hoffe irgendwer kann mir helfen. danke.
ich weiß nicht was JFace ist und was ein InputDialog ist, aber wieso sollte das nicht funktionieren !? ist doch egal was fürne klasse das ist, solange sie die möglichkeit bietet n keylistener zu adden. wo is das problem?
Das problem ist, das ich den KeyListener zwar "adden" kann (um genau zu der aktiven shell), aber er nicht auf einen Tastendruck reagiert.
Und zwar weil immer der Text bzw. die Textarea den Focus hat und ich aber nicht den Handle bzw. den Control für
diesen Text bekomme um den KeyListener für diese Textarea hinzuzufügen.
Aber dieses Problem ist jetzt nicht mehr so wichtig.
Ich habe mir einen eigenen Dialog gebastelt, der so aussehen soll, wie ich es will.
Jetzt habe ich aber ein neues Problem:
Ich habe eine Klasse abgeleitet von der Dialog Klasse (org.eclipse.jface.dialogs.dialog) und die createContents-funktion überschrieben.
So weit, so gut.
Der Dialog wird auch korrekt geöffnet und es wird beim Schließen auch zwischen "ok" und "cancel" button unterschieden.
Wenn ich nun aber einen der Buttons gedrückt habe, wird der Dialog komplett geschlossen und ich kann nicht mehr auf eine Funktion zugreifen.
Das muss ich aber eigentlich noch. denn ich brauche ja den text aus dem Textfeld...
Die Fehlermeldung sieht so aus: org.eclipse.swt.SWTException: Widget is disposed
und mein code so:
Code:
public class FileStringDialog extends Dialog {
private Text textField;
public FileStringDialog(Shell shell) {
super(shell);
setBlockOnOpen(true);
// TODO Auto-generated constructor stub
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite)
*/
protected Control createContents(final Composite parent) {
// TODO Auto-generated method stub
//Composite my_comp = new Composite(parent,SWT.BORDER);
parent.setLayout(new GridLayout(1, false));
parent.getShell().setText("headliner");
//super.createButton(parent,0,"Ok",true);
Label lab = new Label(parent, SWT.NULL);
lab
.setText("Test");
GridData grd = new GridData(GridData.GRAB_HORIZONTAL
| GridData.HORIZONTAL_ALIGN_CENTER);
//grd.horizontalSpan = 2;
lab.setLayoutData(grd);
textField = new Text(parent, SWT.BORDER | SWT.SINGLE);
textField.setText("[default]");
textField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
| GridData.GRAB_HORIZONTAL));
//super.createDialogArea(my_comp);
Button b = new Button(parent, SWT.PUSH);
b.setText("load filename");
b.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
b.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent arg0) {
// TODO Auto-generated method stub
FileDialog f = new FileDialog(parent.getShell(), SWT.OPEN);
f.setFilterExtensions(new String[] { "*.*" });
f.setFilterNames(new String[] { "all files *.*" });
if (f.open() != null)
textField.setText(f.getFileName());
}
public void widgetDefaultSelected(SelectionEvent arg0) {
// TODO Auto-generated method stub
}
});
return super.createContents(parent); }
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.window.Window#open()
*/
public int open() {
return super.open();
}
public String getText() {
return textField.getText();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.window.Window#close()
*/
public boolean close() {
return super.close();
}
}
Wie kann ich es jetzt machen, das der Dialog zwar geschlossen wird, aber ich immernoch auf die Funktionen zugreifen kann???
Ich hoffe mir kann jemand helfen...