Probleme avec state

Probleme avec state - Java - Programmation

Marsh Posté le 12-03-2011 à 16:41:51    

 
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 :
  1. import javax.swing.JFrame ;
  2. import javax.swing.BoxLayout;
  3. import javax.swing.JPanel ;
  4. import javax.swing.JColorChooser ;
  5. import javax.swing.Box ;
  6. import javax.swing.BorderFactory ;
  7. import fr.lri.swingstates.canvas.CExtensionalTag;
  8. import fr.lri.swingstates.canvas.CStateMachine;
  9. import fr.lri.swingstates.canvas.CStateMachine.ReleaseOnTag;
  10. import fr.lri.swingstates.sm.Transition;
  11. import fr.lri.swingstates.sm.transitions.Drag;
  12. import fr.lri.swingstates.sm.transitions.Press;
  13. import java.awt.Container ;
  14. import java.awt.Graphics;
  15. import java.awt.Graphics2D;
  16. import java.awt.Point ;
  17. import java.awt.Color ;
  18. import java.awt.Dimension ;
  19. import java.awt.event.ActionEvent ;
  20. import java.awt.event.ActionListener ;
  21. import java.awt.event.MouseAdapter ;
  22. import java.awt.event.MouseMotionAdapter ;
  23. import java.awt.event.MouseEvent ;
  24. import java.awt.geom.GeneralPath;
  25. import java.lang.Thread.State;
  26. import java.util.ArrayList ;
  27. public class GraphicalEditor extends JFrame {
  28. private PersistentCanvas canvas ;
  29.     private String mode ;
  30.     private CanvasItem selection ;
  31.     private Point mousepos ;
  32.     public static double x;
  33. public static double y;
  34.   CStateMachine sm = new CStateMachine(){
  35.    
  36.    
  37.      public State start = new State(){
  38.       Transition t1 = new Press(BUTTON1,"=>drag" ){
  39.        public void action(Graphics graphics){
  40.         Graphics2D g = (Graphics2D)graphics ;
  41.         int arraySize = 3;
  42.               int[] xPoints = new int[arraySize];
  43.               int[] yPoints = new int[arraySize];
  44.                 xPoints[0] = (int) GraphicalEditor.x - 12;
  45.                 yPoints[0] = (int) GraphicalEditor.y;
  46.                 xPoints[1] = (int) GraphicalEditor.x - 12;
  47.                 yPoints[1] = (int) GraphicalEditor.y + 50;
  48.                 xPoints[2] = (int) GraphicalEditor.x - 62;
  49.                 yPoints[2] = (int) GraphicalEditor.y + 50;
  50.             
  51.               g.drawPolyline(xPoints, yPoints, xPoints.length);
  52.             
  53.               xPoints[0] = (int) GraphicalEditor.x + 12;
  54.               yPoints[0] = (int) GraphicalEditor.y; 
  55.               xPoints[1] = (int) GraphicalEditor.x + 12; 
  56.               yPoints[1] = (int) GraphicalEditor.y + 50; 
  57.               xPoints[2] = (int) GraphicalEditor.x + 62; 
  58.               yPoints[2] = (int) GraphicalEditor.y + 50; 
  59.           
  60.             g.drawPolyline(xPoints, yPoints, xPoints.length);
  61.           
  62.             xPoints[0] = (int) GraphicalEditor.x - 62; 
  63.             yPoints[0] = (int) GraphicalEditor.y + 75;
  64.             xPoints[1] = (int) GraphicalEditor.x + 62;
  65.             yPoints[1] = (int) GraphicalEditor.y + 75;
  66.         
  67.             g.drawPolyline(xPoints, yPoints, 2);
  68.        }
  69.       };
  70.      };
  71.      public State drag = new State(){
  72.       Transition t2 = new Drag(){
  73.        public void action2(){
  74.    
  75.        }
  76.       };
  77.       Transition t3 = new ReleaseOnTag(">>strat", BUTTON1){
  78.        public void action3(){
  79.    
  80.        }
  81.       };
  82.    
  83.      };
  84.     };
  85.    
  86.     private ActionListener modeListener = new ActionListener() {
  87.    public void actionPerformed(ActionEvent e) {
  88.    mode = e.getActionCommand() ;
  89.    }
  90.    } ;
  91.     private ActionListener operationListener = new ActionListener() {
  92.    public void actionPerformed(ActionEvent e) {
  93.    if (selection==null) return ;
  94.    String op = e.getActionCommand() ;
  95.    }
  96.    } ;
  97.     public GraphicalEditor(String theTitle, int width, int height) {
  98.    
  99.    selection = null ;
  100.    Container pane = getContentPane() ;
  101.    pane.setLayout(new BoxLayout(pane, BoxLayout.LINE_AXIS)) ;
  102.    JPanel panel = new JPanel() ;
  103.    panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)) ;
  104.        panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)) ;
  105.    mode = "Rectangle" ;
  106.    pane.add(panel) ;
  107.    canvas = new PersistentCanvas() ;
  108.    canvas.setBackground(Color.WHITE) ;
  109.    canvas.setPreferredSize(new Dimension(width,height)) ;
  110.    pane.add(canvas) ;
  111.    canvas.addMouseListener(new MouseAdapter() {
  112.    public void mousePressed(MouseEvent e) {
  113.    Point p = e.getPoint() ;
  114.    x = e.getX();
  115.    y=e.getY();
  116.    CanvasItem item = null ;
  117.    Color o = Color.BLUE ;
  118.    Color f = Color.YELLOW ;
  119.    item = new RectangleItem(canvas,o,f,p) ;
  120.    canvas.addItem(item) ;
  121.    select(item) ;
  122.    mousepos = p ;
  123.    }
  124.    }) ;
  125.    
  126.    canvas.addMouseMotionListener(new MouseMotionAdapter() {
  127.    public void mouseDragged(MouseEvent e) {
  128.        selection.update(e.getPoint()) ;
  129.    mousepos = e.getPoint() ;
  130.    }
  131.    }) ;
  132.  
  133.  
  134.  
  135.  
  136.    pack() ;
  137.  
  138.    setVisible(true) ;
  139.     }
  140.  
  141.     private void select(CanvasItem item) {
  142.  
  143.    selection = item ;
  144.    if (selection!=null) {
  145.    selection.select() ;
  146.    }
  147.     }
  148.    
  149.    
  150.    
  151.     public static void main(String[] args) {
  152.    GraphicalEditor editor = new GraphicalEditor("GraphicalEditor",800,600) ;
  153.    editor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
  154.     }
  155. }


 
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 :
  1. import java.awt.Component ;
  2. import java.awt.Graphics2D ;
  3. import java.awt.Graphics ;
  4. import java.awt.Point ;
  5. import java.awt.RenderingHints ;
  6. import java.util.ArrayList ;
  7. import fr.lri.swingstates.canvas.CExtensionalTag;
  8. import fr.lri.swingstates.canvas.CPolyLine;
  9. import fr.lri.swingstates.canvas.CStateMachine;
  10. import fr.lri.swingstates.canvas.Canvas;
  11. import fr.lri.swingstates.sm.State;
  12. import fr.lri.swingstates.sm.Transition;
  13. import fr.lri.swingstates.sm.transitions.Drag;
  14. import fr.lri.swingstates.sm.transitions.Press;
  15. import fr.lri.swingstates.sm.transitions.Release;
  16. class PersistentCanvas extends Component {
  17.     private ArrayList<CanvasItem> items ;
  18.      
  19.     PersistentCanvas() {
  20.    items = new ArrayList<CanvasItem>() ;
  21.     }
  22.     public CanvasItem addItem(CanvasItem item) {
  23.    if (item==null) return null ;
  24.    items.add(item) ;
  25.    repaint() ;
  26.    return item ;
  27.     }
  28.     public void paint(Graphics graphics) {
  29.    Graphics2D g = (Graphics2D)graphics ;
  30.    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) ;
  31.    g.setColor(getBackground()) ;
  32.    g.fillRect(0, 0, getWidth(), getHeight()) ;
  33.    for (CanvasItem item : items) item.paint(g) ;
  34.  
  35.     } 
  36.    
  37. }


 
Merci d'avance

Reply

Marsh Posté le 12-03-2011 à 16:41:51   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed