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