lundi 25 mai 2015

Bildervorschau, MouseDragged das Bild verschieben

Hallo meine Freunde,

ich versuche grade eine Windows-Fotoanzeige nachzuprogrammieren. Bis jetzt habe ich alles ganz gut hinbekommen nur fehlt mir wenn ich reinzoome, dass ich mit einem Mausklick mein Bild verschieben kann. Hat jemand eine Ahnung wie man dieses realisieren kann ?

Code

Java Code:

  1.  
  2. package de.marvin.oopLabor5;
  3.  
  4. import java.awt.BorderLayout;
  5. import java.awt.Color;
  6. import java.awt.Dimension;
  7. import java.awt.FlowLayout;
  8. import java.awt.Graphics;
  9. import java.awt.Image;
  10. import java.awt.Point;
  11. import java.awt.Toolkit;
  12. import java.awt.event.ActionEvent;
  13. import java.awt.event.ActionListener;
  14. import java.awt.event.MouseEvent;
  15. import java.awt.event.MouseListener;
  16. import java.awt.event.MouseMotionListener;
  17. import java.io.File;
  18.  
  19. import javax.swing.ImageIcon;
  20. import javax.swing.JButton;
  21. import javax.swing.JPanel;
  22.  
  23. public class Fenster extends JPanel implements ActionListener,MouseListener
  24. {
  25. private static final long serialVersionUID = 1L;
  26.  
  27. private JButton[] buttons = new JButton[5];
  28. private File[] bilder;
  29. File myDirectory = new File ("pics/verzeichnis");
  30.  
  31. private final ImageIcon bild1 = new ImageIcon("pics/luppeWeg.png");
  32. private final ImageIcon bild2 = new ImageIcon("pics/luppeRein.png");
  33. private final ImageIcon bild3 = new ImageIcon("pics/zuruck.png");
  34. private final ImageIcon bild4 = new ImageIcon("pics/back.png");
  35. private final ImageIcon bild5 = new ImageIcon("pics/forward.png");
  36.  
  37. private int bildNr = 0;
  38. private int groesseX = 1;
  39. private int groesseY = 1;
  40. private int mousePressedX = 0;
  41. private int mousePressedY = 0;
  42. private int mouseReleasedX = 0;
  43. private int mouseReleasedY = 0;
  44.  
  45. Fenster()
  46. {
  47. this.addMouseListener(this);
  48. this.setLayout(new BorderLayout());
  49. this.add(buttonsErstellen(), BorderLayout.SOUTH);
  50. }
  51.  
  52.  
  53. protected int[] setGroesse()
  54. {
  55. int[] groesse = new int[4];
  56. Dimension dBorder = getSize();
  57. Dimension dFill = new Dimension((int)(dBorder.width*groesseX),(int)(dBorder.height*groesseY));
  58. Point p0Fill = new Point((dBorder.width - dFill.width) /2,(dBorder.height - dFill.height) / 2);
  59.  
  60.  
  61. return groesse;
  62. }
  63.  
  64. @Override
  65. protected void paintComponent(Graphics g)
  66. {
  67. super.paintComponent(g);
  68. bilder = myDirectory.listFiles();
  69.  
  70. int[] groesse = new int[4];
  71. Dimension dBorder = getSize();
  72. Dimension dFill = new Dimension((int)(dBorder.width*groesseX),(int)(dBorder.height*groesseY));
  73. Point p0Fill = new Point((dBorder.width - dFill.width) /2,(dBorder.height - dFill.height) / 2);
  74.  
  75. System.out.println(p0Fill.x+" "+p0Fill.y);
  76.  
  77. g.drawImage(verweiseToImage(bilder)[bildNr],p0Fill.x,p0Fill.y,dFill.width,dFill.height,this);
  78. }
  79.  
  80. private Image[] verweiseToImage(File[] verweise)
  81. {
  82. Image[] dieBilder = new Image[verweise.length];
  83.  
  84. for(int i = 0; i < verweise.length;i++)
  85. {
  86. dieBilder[i] = Toolkit.getDefaultToolkit().getImage(verweise[i].toString());
  87. }
  88.  
  89. return dieBilder;
  90. }
  91.  
  92. public JPanel buttonsErstellen()
  93. {
  94.  
  95. JPanel buttonsP = new JPanel();
  96. buttonsP.setLayout(new FlowLayout());
  97.  
  98. for(int i =0; i < buttons.length;i++)
  99. {
  100. switch(i)
  101. {
  102. case 0:
  103. buttons[i] = new JButton(); //Luppe verkleinern
  104. buttons[i].setIcon(bild1);
  105. buttonsP.add(buttons[i]);
  106. buttons[i].addActionListener(this);
  107. break;
  108. case 1:
  109. buttons[i] = new JButton(); //Luppe vergrößern
  110. buttons[i].setIcon(bild2);
  111. buttonsP.add(buttons[i]);
  112. buttons[i].addActionListener(this);
  113. break;
  114. case 2:
  115. buttons[i] = new JButton(); //Bild zurücksetzen
  116. buttons[i].setIcon(bild3);
  117. buttonsP.add(buttons[i]);
  118. buttons[i].addActionListener(this);
  119. break;
  120. case 3:
  121. buttons[i] = new JButton(); // weiter gehen
  122. buttons[i].setIcon(bild4);
  123. buttonsP.add(buttons[i]);
  124. buttons[i].addActionListener(this);
  125. break;
  126. case 4:
  127. buttons[i] = new JButton(); // zurück gehen
  128. buttons[i].setIcon(bild5);
  129. buttonsP.add(buttons[i]);
  130. buttons[i].addActionListener(this);
  131. break;
  132. }
  133. }
  134. return buttonsP;
  135. }
  136.  
  137. @Override
  138. public void actionPerformed(ActionEvent e)
  139. {
  140. if(e.getSource() == buttons[0])
  141. {
  142. if(groesseX > 1 && groesseY >1)
  143. {
  144. groesseX--;
  145. groesseY--;
  146. }
  147. repaint();
  148.  
  149. }
  150. else if(e.getSource() == buttons[1])
  151. {
  152. groesseX++;
  153. groesseY++;
  154. repaint();
  155. }
  156. else if(e.getSource() == buttons[2])
  157. {
  158. groesseX = 1;
  159. groesseY = 1;
  160. repaint();
  161. }
  162. else if(e.getSource() == buttons[3])
  163. {
  164. this.bildNr--;
  165. if(bildNr < 0)
  166. {
  167. this.bildNr = 5;
  168. }
  169. repaint();
  170. }
  171. else if(e.getSource() == buttons[4])
  172. {
  173. this.bildNr++;
  174. if(bildNr >= bilder.length)
  175. {
  176. this.bildNr = 0;
  177. }
  178. repaint();
  179. }
  180. }
  181.  
  182.  
  183. @Override
  184. public void mouseClicked(MouseEvent e)
  185. {
  186. }
  187.  
  188. @Override
  189. public void mouseEntered(MouseEvent e)
  190. {
  191. // TODO Auto-generated method stub
  192. System.out.println("KLICK" +e.getX()+" "+e.getY());
  193. }
  194.  
  195. @Override
  196. public void mouseExited(MouseEvent arg0) {
  197. // TODO Auto-generated method stub
  198.  
  199. }
  200.  
  201. @Override
  202. public void mousePressed(MouseEvent e)
  203. {
  204. mousePressedX = e.getX();
  205. mousePressedY = e.getY();
  206. repaint();
  207. System.out.println("KLICK" +e.getX()+" "+e.getY());
  208.  
  209. }
  210.  
  211. @Override
  212. public void mouseReleased(MouseEvent e)
  213. {
  214. mouseReleasedX = e.getX();
  215. mouseReleasedY = e.getY();
  216. System.out.println("WEG"+e.getX()+" "+e.getY());
  217. }
  218. }



Bei den Interfaces habe ich was ausprobiert mit e.getX usw aber ich weiß nicht wie ich das in der Berechnung mit einbinden kann.


Bildervorschau, MouseDragged das Bild verschieben

0 commentaires:

Enregistrer un commentaire