vendredi 24 avril 2015

Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern

Hallo liebe Community,

ich bin grade dabei ein wenig zu programmieren und nun stehe ich irgendwie vor einem Problem. Ich kann dieses Problem irgendwie nicht lösen, vielleicht weiß ein erfahrenderer programmiere dort abhilfe.

Meine Klasse von der ich erbe :

Java Code:

  1.  
  2.  
  3. package de.marvin.oopLabor3;
  4.  
  5. import java.awt.Color;
  6. import java.awt.Dimension;
  7. import java.awt.Graphics;
  8. import java.awt.GridLayout;
  9. import java.awt.Point;
  10. import java.awt.event.MouseEvent;
  11. import java.awt.event.MouseListener;
  12. import java.awt.event.MouseMotionListener;
  13. import java.util.Random;
  14.  
  15. import javax.swing.JFrame;
  16. import javax.swing.JPanel;
  17.  
  18. public class GeometricObject extends JPanel implements MouseListener, MouseMotionListener
  19. {
  20. private static final long serialVersionUID = 1L;
  21. private int fensterGroesse = 600;
  22. private int randomAuswahl;
  23. private int gridX = 8;
  24. private int gridY = 8;
  25. private final int MAXRANDOM = 5;
  26. private final int MINRANDOM = 1;
  27. private final int MAXCOLOR = 240;
  28. private final int RedBorderSize = 40;
  29.  
  30. public void felderErstellung()
  31. {
  32. JFrame f = new JFrame("Laboraufgabe 3");
  33. f.setSize(fensterGroesse,fensterGroesse);
  34. f.setLocationRelativeTo(null);
  35. f.setLayout(new GridLayout(gridX,gridY));
  36. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37. f.setResizable(false);
  38.  
  39. for(int i = 0; i < (gridX*gridY);i++)
  40. {
  41. randomAuswahl = randInt(MINRANDOM,MAXRANDOM);
  42. switch(randomAuswahl)
  43. {
  44. case 1:
  45. f.add(new Square());
  46. break;
  47. case 2:
  48. f.add(new Circle());
  49. break;
  50. case 3:
  51. f.add(new Triangle());
  52. break;
  53. case 4:
  54. f.add(new Pacman());
  55. break;
  56. case 5:
  57. f.add(new MySpecialShape());
  58. break;
  59. }
  60. }
  61. f.setVisible(true);
  62. }
  63.  
  64. protected int randInt(int min, int max)
  65. {
  66. Random rand = new Random();
  67. int randomNum = rand.nextInt((max - min) + 1) + min;
  68.  
  69. return randomNum;
  70. }
  71.  
  72. protected int[] setRelativeSize()
  73. {
  74. int FillViereck = randInt(MINRANDOM,MAXRANDOM); //Muss gleiche größe haben, deshalb eine Variable
  75.  
  76. final Dimension dBorder = getSize(); // Bekomme die höhe und weite als Dimension Object back
  77. final Dimension dFill = new Dimension(dBorder.width /FillViereck, dBorder.height /FillViereck); // Erstelle selbst ein neues Object
  78. final Point p0Fill = new Point((dBorder.width - dFill.width) / 2,(dBorder.height - dFill.height) / 2); // X u Y Wert
  79. int[] koordinaten = {p0Fill.x,p0Fill.y, dFill.width, dFill.height};
  80.  
  81. return koordinaten;
  82. }
  83.  
  84. protected void kastenErstellen(Graphics g)
  85. {
  86. g.setColor(Color.RED); //Vorgegeben
  87. g.drawRect(getWidth()/RedBorderSize,getHeight()/RedBorderSize,getWidth()-2,getHeight()-2); // Sonst sind die L
  88. }
  89.  
  90. protected void setColor(Graphics g)
  91. {
  92. g.setColor(new Color(randInt(MINRANDOM,MAXCOLOR),randInt(MINRANDOM,MAXCOLOR),randInt(MINRANDOM,MAXCOLOR)));
  93. }
  94.  
  95. public void mouseClicked(MouseEvent event)
  96. {
  97. System.out.println("hello");
  98. }
  99.  
  100. public void mousePressed(MouseEvent event)
  101. {
  102. System.out.println("hello");
  103. }
  104.  
  105. public void mouseReleased(MouseEvent event)
  106. {
  107.  
  108. }
  109.  
  110. public void mouseEntered(MouseEvent event)
  111. {
  112.  
  113. }
  114.  
  115. public void mouseExited(MouseEvent event)
  116. {
  117.  
  118. }
  119.  
  120. //These are mousemoition
  121.  
  122. public void mouseDragged(MouseEvent event)
  123. {
  124.  
  125.  
  126. }
  127.  
  128. public void mouseMoved(MouseEvent event)
  129. {
  130. System.out.println("eigentlich rot");
  131. }
  132.  
  133. }


Z.b Square die Farbe ändern.

Java Code:

  1.  
  2. package de.marvin.oopLabor3;
  3.  
  4. import java.awt.Graphics;
  5.  
  6. public class Square extends GeometricObject
  7. {
  8. private static final long serialVersionUID = 1L;
  9.  
  10. public void paintComponent(Graphics g)
  11. {
  12. super.paintComponent(g);
  13. int[] koordinaten = setRelativeSize();
  14.  
  15. setColor(g);
  16. g.fillRect(koordinaten[0], koordinaten[1], koordinaten[2],koordinaten[3]);
  17.  
  18. addMouseMotionListener(new GeometricObject());
  19. kastenErstellen(g);
  20. }
  21. }


Weiß jemand wie ich in der Methode

Java Code:

  1.  
  2. public void mouseMoved(MouseEvent event)
  3. {
  4. System.out.println("eigentlich rot");
  5. }


mein Objekt von Typ Square die Farbe ändern kann ? Ich kann ja nicht eine neue Instanz der Klasse Square erstellen und dort dann den Datentyp Graphics übergeben und dann die Farbe ändern, weil er sonst ja tausende machen würde.

Mit freundlichen Grüßen

Zidi


Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern

0 commentaires:

Enregistrer un commentaire