Как сделать, чтобы одна из сторон прямоугольника была отмечена с помощью графического интерфейса в Java (только SWT)? - PullRequest
1 голос
/ 23 января 2012

Учитывая следующий код:

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class BasicShapes {

    private Shell shell;

    public BasicShapes(Display display) {    
        shell = new Shell(display);
        shell.addPaintListener(new ExmaplePaintListener());
        shell.setText("Basic shapes");
        shell.setSize(430, 300);
        shell.setLocation(300, 300);
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }

    private class ExmaplePaintListener implements PaintListener {

        public void paintControl(PaintEvent e) {    
            drawRectangles(e);
            e.gc.dispose();
        }
    }

    private void drawRectangles(PaintEvent e) {    
        e.gc.setAntialias(SWT.ON);
        e.gc.setBackground(new Color(e.display, 150, 150, 150));    
        e.gc.fillRectangle(20, 20, 120, 80);
        e.gc.fillRectangle(180, 20, 80, 80);
        e.gc.fillRectangle(280,20,100,79);
    }    
}

В приведенном выше коде я создаю 3 прямоугольника, и я хочу, чтобы одна из сторон прямоугольника была помечена / окрашена в другой цвет, или в другойслова, чтобы иметь возможность выбрать каждую из сторон прямоугольника и отметить его.Является ли это возможным ?

С уважением, Рон

1 Ответ

1 голос
/ 23 января 2012

После fill прямоугольника, просто draw линия на одной из его сторон.Например:

e.gc.fillRectangle(280, 20, 100, 79);
e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_BLUE)); //Set the edge color
e.gc.drawLine(280,20, 280+100,20); //Modify this to print
                                   //another side of the rectangle.

Примечание: если вы хотите нарисовать все сторон, очевидно, лучше просто:

e.gc.fillRectangle(280, 20, 100, 79);
e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_BLUE)); //Set the edge color
e.gc.drawRectangle(280, 20, 100, 79);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...