Friday, August 1, 2014

swt canvas.redraw doesn't work for clicking button
































































































































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