Temat: [SWT] Jak modyfikować własności obiektu/głównego okna...
Ok podaje przykład:
package pl.pakiet;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class KlasaA {
protected Shell shell;
private Text txtTest;
public static void main(String[] args) {
try {
KlasaA window = new KlasaA();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("SWT Application");
txtTest = new Text(shell, SWT.BORDER);
txtTest.setText("TEST");
txtTest.setBounds(171, 110, 76, 21);
Button btnZmianaTekstu = new Button(shell, SWT.NONE);
btnZmianaTekstu.setBounds(157, 158, 117, 25);
btnZmianaTekstu.setText("ZMIANA TEKSTU");
btnZmianaTekstu.addSelectionListener(new SelectionAdapter( ) {
public void widgetSelected(SelectionEvent e) {
KlasaB dialog = new KlasaB(shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
dialog.setA(KlasaA.this);
dialog.open();
}
}); }
public void zmienTekst(String tekst) {
txtTest.setText(tekst);
}
}
package pl.pakiet;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class KlasaB extends Dialog {
protected Object result;
protected Shell shell;
protected KlasaA referencjaNaKlaseA;
public KlasaB(Shell parent, int style) {
super(parent, style);
setText("SWT Dialog");
}
public Object open() {
createContents();
shell.open();
shell.layout();
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
return result;
}
void setA(final KlasaA a){
referencjaNaKlaseA = a;
}
private void createContents() {
shell = new Shell(getParent(), getStyle());
shell.setSize(450, 300);
shell.setText(getText());
Button button = new Button(shell, SWT.NONE);
button.setBounds(172, 85, 75, 25);
button.setText("New Button");
button.addSelectionListener(new SelectionAdapter( ) {
public void widgetSelected(SelectionEvent e) {
referencjaNaKlaseA.zmienTekst("UDAŁO SIĘ!");
}
});
}
}
Po wciśnięciu przycisku "New button" w oknie dialogowym, ma się zmienić napis w etykiecie w oknie głównym z "TEST" na "UDAŁO SIĘ". Powyższe rozwiązanie już mi działa, ale może znacie jakieś bardziej eleganckie?
Mariusz P. edytował(a) ten post dnia 03.01.11 o godzinie 14:57