the code is :
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class caseButton {
private Shell shell;
public static void main(String[] args) {
try {
caseButton window = new caseButton();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window.
*/
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
* Create contents of the window.
*/
protected void createContents() {
shell = new Shell();
shell.setText("SWT Application");
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 1;
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
gridLayout.verticalSpacing = 4;
gridLayout.makeColumnsEqualWidth=false;
shell.setLayout(gridLayout);
GridData gridData=new GridData();
gridData.verticalSpan = 0;
gridData.horizontalSpan = 3;
gridData.verticalAlignment = GridData.FILL;
gridData.grabExcessVerticalSpace= true;
gridData.horizontalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
final Button button = new Button(shell, SWT.PUSH);
button.setText("draw Rectangle");
final Canvas canvas = new Canvas(shell, SWT.NONE);
canvas.setLayoutData(gridData);
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
e.gc.drawRoundRectangle(10, 10, 180, 80, 10, 10);
}
});
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
System.out.println("buttton_start ");
canvas.redraw(); // it can' work
System.out.println("buttton_end ");
}
});
}
}
the question is : when I click this button, it will print "buttton_start" and "buttton_end", the "canvas.redraw()" can't work. I don't know the reason , who can help me? thanks
No comments:
Post a Comment