IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Probleme avec State()


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Par défaut Probleme avec State()
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    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

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import java.lang.Thread.State;
    Je crois que vous n'importez pas la bonne classe Thread.State est un enum spécifique à la classe Thread. Les enum, on ne peux ni les instancier ni en faire des sous classes. Il sont d'office finaux avec un constructeur privé.

    Hors sujet: inutile d'écumer tous les forums francophones pour poser la même question en copier coller, en général ca donne pas envie aux gens de répondre ce genre d'impatience

Discussions similaires

  1. problem avec EJB stateful
    Par aya19742007 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 30/08/2010, 17h15
  2. Réponses: 4
    Dernier message: 06/07/2009, 11h22
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo