simba91 | Bonjour,
Voici ce que j'ai fait pour le moment mais ce n'est point finit. Cependant j'ai une erreur avec mes State :
"Cannot instantiate the type Thread..State"
Code :
- import javax.swing.JFrame ;
- import javax.swing.BoxLayout;
- import javax.swing.JPanel ;
- import javax.swing.JColorChooser ;
- import javax.swing.Box ;
- import javax.swing.BorderFactory ;
- import fr.lri.swingstates.canvas.CExtensionalTag;
- import fr.lri.swingstates.canvas.CStateMachine;
- import fr.lri.swingstates.canvas.CStateMachine.ReleaseOnTag;
- import fr.lri.swingstates.sm.Transition;
- import fr.lri.swingstates.sm.transitions.Drag;
- import fr.lri.swingstates.sm.transitions.Press;
- import java.awt.Container ;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Point ;
- import java.awt.Color ;
- import java.awt.Dimension ;
- import java.awt.event.ActionEvent ;
- import java.awt.event.ActionListener ;
- import java.awt.event.MouseAdapter ;
- import java.awt.event.MouseMotionAdapter ;
- import java.awt.event.MouseEvent ;
- import java.awt.geom.GeneralPath;
- import java.lang.Thread.State;
- import java.util.ArrayList ;
- public class GraphicalEditor extends JFrame {
- private PersistentCanvas canvas ;
- private String mode ;
- private CanvasItem selection ;
- private Point mousepos ;
- public static double x;
- public static double y;
- CStateMachine sm = new CStateMachine(){
-
-
- public State start = new State(){
- Transition t1 = new Press(BUTTON1,"=>drag" ){
- public void action(Graphics graphics){
- Graphics2D g = (Graphics2D)graphics ;
- int arraySize = 3;
- int[] xPoints = new int[arraySize];
- int[] yPoints = new int[arraySize];
- xPoints[0] = (int) GraphicalEditor.x - 12;
- yPoints[0] = (int) GraphicalEditor.y;
- xPoints[1] = (int) GraphicalEditor.x - 12;
- yPoints[1] = (int) GraphicalEditor.y + 50;
- xPoints[2] = (int) GraphicalEditor.x - 62;
- yPoints[2] = (int) GraphicalEditor.y + 50;
-
- g.drawPolyline(xPoints, yPoints, xPoints.length);
-
- xPoints[0] = (int) GraphicalEditor.x + 12;
- yPoints[0] = (int) GraphicalEditor.y;
- xPoints[1] = (int) GraphicalEditor.x + 12;
- yPoints[1] = (int) GraphicalEditor.y + 50;
- xPoints[2] = (int) GraphicalEditor.x + 62;
- yPoints[2] = (int) GraphicalEditor.y + 50;
-
- g.drawPolyline(xPoints, yPoints, xPoints.length);
-
- xPoints[0] = (int) GraphicalEditor.x - 62;
- yPoints[0] = (int) GraphicalEditor.y + 75;
- xPoints[1] = (int) GraphicalEditor.x + 62;
- yPoints[1] = (int) GraphicalEditor.y + 75;
-
- g.drawPolyline(xPoints, yPoints, 2);
- }
- };
- };
- public State drag = new State(){
- Transition t2 = new Drag(){
- public void action2(){
-
- }
- };
- Transition t3 = new ReleaseOnTag(">>strat", BUTTON1){
- public void action3(){
-
- }
- };
-
- };
- };
-
- private ActionListener modeListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- mode = e.getActionCommand() ;
- }
- } ;
- private ActionListener operationListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (selection==null) return ;
- String op = e.getActionCommand() ;
- }
- } ;
- public GraphicalEditor(String theTitle, int width, int height) {
-
- selection = null ;
- Container pane = getContentPane() ;
- pane.setLayout(new BoxLayout(pane, BoxLayout.LINE_AXIS)) ;
- JPanel panel = new JPanel() ;
- panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)) ;
- panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)) ;
- mode = "Rectangle" ;
- pane.add(panel) ;
- canvas = new PersistentCanvas() ;
- canvas.setBackground(Color.WHITE) ;
- canvas.setPreferredSize(new Dimension(width,height)) ;
- pane.add(canvas) ;
- canvas.addMouseListener(new MouseAdapter() {
- public void mousePressed(MouseEvent e) {
- Point p = e.getPoint() ;
- x = e.getX();
- y=e.getY();
- CanvasItem item = null ;
- Color o = Color.BLUE ;
- Color f = Color.YELLOW ;
- item = new RectangleItem(canvas,o,f,p) ;
- canvas.addItem(item) ;
- select(item) ;
- mousepos = p ;
- }
- }) ;
-
- canvas.addMouseMotionListener(new MouseMotionAdapter() {
- public void mouseDragged(MouseEvent e) {
- selection.update(e.getPoint()) ;
- mousepos = e.getPoint() ;
- }
- }) ;
-
-
-
-
- pack() ;
-
- setVisible(true) ;
- }
-
- private void select(CanvasItem item) {
-
- selection = item ;
- if (selection!=null) {
- selection.select() ;
- }
- }
-
-
-
- public static void main(String[] args) {
- GraphicalEditor editor = new GraphicalEditor("GraphicalEditor",800,600) ;
- editor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
- }
- }
|
C'est la première fois que j'utilise une machine à état si quelqu'un pouvait m'aider...
Je possède également une deuxième classe si ca peut aider à comprendre ...
Code :
- import java.awt.Component ;
- import java.awt.Graphics2D ;
- import java.awt.Graphics ;
- import java.awt.Point ;
- import java.awt.RenderingHints ;
- import java.util.ArrayList ;
- import fr.lri.swingstates.canvas.CExtensionalTag;
- import fr.lri.swingstates.canvas.CPolyLine;
- import fr.lri.swingstates.canvas.CStateMachine;
- import fr.lri.swingstates.canvas.Canvas;
- import fr.lri.swingstates.sm.State;
- import fr.lri.swingstates.sm.Transition;
- import fr.lri.swingstates.sm.transitions.Drag;
- import fr.lri.swingstates.sm.transitions.Press;
- import fr.lri.swingstates.sm.transitions.Release;
- class PersistentCanvas extends Component {
- private ArrayList<CanvasItem> items ;
-
- PersistentCanvas() {
- items = new ArrayList<CanvasItem>() ;
- }
- public CanvasItem addItem(CanvasItem item) {
- if (item==null) return null ;
- items.add(item) ;
- repaint() ;
- return item ;
- }
- public void paint(Graphics graphics) {
- Graphics2D g = (Graphics2D)graphics ;
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) ;
- g.setColor(getBackground()) ;
- g.fillRect(0, 0, getWidth(), getHeight()) ;
- for (CanvasItem item : items) item.paint(g) ;
-
- }
-
- }
|
Merci d'avance |