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