Zidinjo

Labor5

May 28th, 2015
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.66 KB | None | 0 0
  1. package de.marvin.oopLabor5;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args)
  6.     {
  7.         new MyFrame();
  8.     }
  9. }
  10.  
  11.  
  12. ////MyFrame
  13.  
  14. package de.marvin.oopLabor5;
  15.  
  16. import java.awt.Color;
  17. import java.awt.event.ActionEvent;
  18. import java.awt.event.ActionListener;
  19. import java.io.File;
  20.  
  21. import javax.swing.JColorChooser;
  22. import javax.swing.JFileChooser;
  23. import javax.swing.JFrame;
  24. import javax.swing.JMenu;
  25. import javax.swing.JMenuBar;
  26. import javax.swing.JMenuItem;
  27.  
  28. public class MyFrame implements ActionListener
  29. {
  30.  
  31.     private int sizeWidth = 600;
  32.     private int sizeHeight = 600;
  33.     private JMenuBar myMenuBar = new JMenuBar(); // Menü wird erstellt - Platz reserviert
  34.     private JMenu myMenu = new JMenu("Options"); // OberMenü wird erstellt
  35.     private JMenuItem myMenuItem = new JMenuItem("Farbe des Rahmens"); // UnterMenü wird erstellt
  36.     private JMenuItem myMenuItem2 = new JMenuItem("Bilderverzeichnis Auswählen"); // UnterMenü wird erstellt
  37.     private Fotovorschau fotovorschau = new Fotovorschau();
  38.     protected Color myColor;
  39.    
  40.     MyFrame()
  41.     {
  42.         JFrame f = new JFrame();
  43.         f.setSize(sizeWidth, sizeHeight);
  44.         f.setLocationRelativeTo(null);
  45.         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  46.         f.setTitle("Fotovorschau");
  47.         f.add(fotovorschau);
  48.        
  49.         myMenuBar.add(myMenu); // Dem Menü wird das Obermnü hinzugefügt
  50.         myMenu.add(myMenuItem); // Das Obermenü bekommt das Untermenü
  51.         myMenu.add(myMenuItem2);
  52.         f.setJMenuBar(myMenuBar); // Menü wird dem Frame hinzugefügt
  53.        
  54.         myMenuItem.addActionListener(this);
  55.         myMenuItem2.addActionListener(this);
  56.         f.setVisible(true);
  57.     }
  58.  
  59.   @Override
  60.   public void actionPerformed(ActionEvent e)
  61.   {
  62.     if(e.getSource() == myMenuItem)
  63.     {
  64.       Color newColor = JColorChooser.showDialog(fotovorschau, "Farbe wählen", myColor);
  65.      
  66.       if (newColor != null)
  67.       {
  68.           myColor = newColor;
  69.           fotovorschau.setColor(myColor);
  70.           fotovorschau.repaint();
  71.       }
  72.     }
  73.    
  74.     if(e.getSource() == myMenuItem2)
  75.     {
  76.       JFileChooser fc = new JFileChooser();
  77.       fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
  78.       int result = fc.showDialog(fotovorschau, "Verzeichnis auswählen");
  79.      
  80.       if (result == JFileChooser.APPROVE_OPTION)
  81.       {
  82.         File[] fileList = fc.getSelectedFile().listFiles();
  83.         fotovorschau.setBilderAuswahlVerzeichnis(fileList);
  84.       }
  85.     }
  86.   }
  87. }
  88.  
  89.  
  90. //Fotovorchau
  91.  
  92.  
  93. package de.marvin.oopLabor5;
  94.  
  95. import java.awt.BorderLayout;
  96. import java.awt.Color;
  97. import java.awt.Dimension;
  98. import java.awt.FlowLayout;
  99. import java.awt.Graphics;
  100. import java.awt.Image;
  101. import java.awt.Point;
  102. import java.awt.Toolkit;
  103. import java.awt.event.ActionEvent;
  104. import java.awt.event.ActionListener;
  105. import java.awt.event.MouseEvent;
  106. import java.awt.event.MouseMotionListener;
  107. import java.awt.event.MouseWheelEvent;
  108. import java.awt.event.MouseWheelListener;
  109. import java.io.File;
  110.  
  111. import javax.swing.ImageIcon;
  112. import javax.swing.JButton;
  113. import javax.swing.JPanel;
  114.  
  115. public class Fotovorschau extends JPanel implements ActionListener, MouseMotionListener, MouseWheelListener
  116. {
  117.     private static final long serialVersionUID = 1L;
  118.  
  119.     private JButton[] buttons = new JButton[5];
  120.  
  121.     private final ImageIcon bild1 = new ImageIcon("pics/luppeWeg.png");
  122.     private final ImageIcon bild2 = new ImageIcon("pics/luppeRein.png");
  123.     private final ImageIcon bild3 = new ImageIcon("pics/zuruck.png");
  124.     private final ImageIcon bild4 = new ImageIcon("pics/back.png");
  125.     private final ImageIcon bild5 = new ImageIcon("pics/forward.png");
  126.  
  127.     private int bildNr = 0;
  128.     private int groesseX = 1;
  129.     private int groesseY = 1;
  130.     private int previousX = 0;
  131.     private int previousY = 0;
  132.     private Color rahmenFarbe = null;
  133.     private File[] bilderAuswahlVerzeichnis = null;
  134.    
  135.     Fotovorschau()
  136.     {
  137.         this.addMouseMotionListener(this);
  138.         this.addMouseWheelListener(this);
  139.         this.setLayout(new BorderLayout());
  140.         this.add(buttonsErstellen(buttons.length), BorderLayout.SOUTH);
  141.     }
  142.    
  143.     protected Image[] filesToImages()
  144.     {    
  145.       if(bilderAuswahlVerzeichnis == null)
  146.       {
  147.         File[] bilder;
  148.         File myDirectory = new File ("pics/verzeichnis");
  149.         bilder = myDirectory.listFiles();
  150.        
  151.         Image[] dieBilder = new Image[bilder.length];
  152.        
  153.         for(int i = 0; i < dieBilder.length;i++)
  154.         {
  155.             dieBilder[i] = Toolkit.getDefaultToolkit().getImage(bilder[i].toString());
  156.         }
  157.         return dieBilder;
  158.       }
  159.       else
  160.       {
  161.         Image[] dieBilder2 = new Image[bilderAuswahlVerzeichnis.length];
  162.         for(int i = 0; i < dieBilder2.length;i++)
  163.         {
  164.             dieBilder2[i] = Toolkit.getDefaultToolkit().getImage(bilderAuswahlVerzeichnis[i].toString());
  165.         }
  166.         return dieBilder2;
  167.       }
  168.     }
  169.    
  170.     protected void setColor(Color farbe)
  171.     {
  172.         this.rahmenFarbe = farbe;
  173.     }
  174.    
  175.     protected void setBilderAuswahlVerzeichnis(File[] verzeichnisAuswahl)
  176.     {
  177.       this.bilderAuswahlVerzeichnis = verzeichnisAuswahl;
  178.     }
  179.    
  180.     protected int[] setGroesse()
  181.     {
  182.         int[] groesse = new int[4];
  183.         Dimension dBorder = getSize();
  184.         Dimension dFill = new Dimension(((int)((dBorder.width*groesseX)*0.8)),((int)((dBorder.height*groesseY)*0.8)));
  185.         Point p0Fill = new Point((dBorder.width - dFill.width) /2,(dBorder.height - dFill.height) / 2);
  186.        
  187.         if(previousX == 0 && previousY == 0)
  188.         {
  189.             groesse[0] = p0Fill.x;
  190.             groesse[1] = p0Fill.y;
  191.             groesse[2] = dFill.width;
  192.             groesse[3] = dFill.height;
  193.         }
  194.         else
  195.         {
  196.           groesse[0] = previousX;
  197.           groesse[1] = previousY;
  198.           groesse[2] = dFill.width;
  199.           groesse[3] = dFill.height;
  200.         }
  201.         return groesse;
  202.     }
  203.     @Override
  204.     protected void paintComponent(Graphics g)
  205.     {
  206.         super.paintComponent(g);
  207.         g.drawImage(filesToImages()[bildNr],setGroesse()[0],setGroesse()[1]-10,setGroesse()[2],setGroesse()[3],this);
  208.         g.setColor(this.rahmenFarbe);
  209.         g.drawRect(setGroesse()[0]-5, setGroesse()[1]-15, setGroesse()[2]+10, setGroesse()[3]+10);
  210.     }
  211.  
  212.     public JPanel buttonsErstellen(int wieVieleBut)
  213.     {
  214.         JPanel buttonsP = new JPanel();
  215.         buttonsP.setLayout(new FlowLayout());
  216.        
  217.         for(int i =0; i < wieVieleBut;i++)
  218.         {
  219.             switch(i)
  220.             {
  221.             case 0:
  222.                 buttons[i] = new JButton(); //Luppe verkleinern
  223.                 buttons[i].setIcon(bild1);
  224.                 buttonsP.add(buttons[i]);
  225.                 buttons[i].addActionListener(this);
  226.                 break;
  227.             case 1:
  228.                 buttons[i] = new JButton(); //Luppe vergrößern
  229.                 buttons[i].setIcon(bild2);
  230.                 buttonsP.add(buttons[i]);
  231.                 buttons[i].addActionListener(this);
  232.                 break;
  233.             case 2:
  234.                 buttons[i] = new JButton(); //Bild zurücksetzen
  235.                 buttons[i].setIcon(bild3);
  236.                 buttonsP.add(buttons[i]);
  237.                 buttons[i].addActionListener(this);
  238.                 break;
  239.             case 3:
  240.                 buttons[i] = new JButton(); // weiter gehen
  241.                 buttons[i].setIcon(bild4);
  242.                 buttonsP.add(buttons[i]);
  243.                 buttons[i].addActionListener(this);
  244.                 break;
  245.             case 4:
  246.                 buttons[i] = new JButton(); // zurück gehen
  247.                 buttons[i].setIcon(bild5);
  248.                 buttonsP.add(buttons[i]);
  249.                 buttons[i].addActionListener(this);
  250.                 break;
  251.             default:
  252.                 buttons[i] = new JButton(); // zurück gehen
  253.                 buttons[i].setIcon(bild5);
  254.                 buttonsP.add(buttons[i]);
  255.                 buttons[i].addActionListener(this);
  256.                 break;
  257.             }
  258.         }
  259.         return buttonsP;
  260.     }
  261.  
  262.     @Override
  263.     public void actionPerformed(ActionEvent e)
  264.     {
  265.         if(e.getSource() == buttons[0])
  266.         {
  267.             if(groesseX > 1 && groesseY > 1)
  268.             {
  269.                 groesseX--;
  270.                 groesseY--;
  271.             }
  272.             repaint();
  273.         }
  274.         else if(e.getSource() == buttons[1])
  275.         {
  276.             groesseX++;
  277.             groesseY++;
  278.             repaint();
  279.         }
  280.         else if(e.getSource() == buttons[2])
  281.         {
  282.             groesseX = 1;
  283.             groesseY = 1;
  284.             previousX = 0;
  285.             previousY = 0;
  286.             repaint();
  287.         }
  288.         else if(e.getSource() == buttons[3])
  289.         {
  290.            
  291.             if(bildNr <= 0)
  292.             {
  293.                 this.bildNr = filesToImages().length;
  294.             }
  295.             this.bildNr--;
  296.             repaint();
  297.         }
  298.         else if(e.getSource() == buttons[4])
  299.         {
  300.             this.bildNr++;
  301.             if(bildNr >= filesToImages().length)
  302.             {
  303.                 this.bildNr = 0;
  304.             }
  305.             repaint();
  306.         }
  307.     }
  308.  
  309.     @Override
  310.     public void mouseDragged(MouseEvent e)
  311.     {
  312.       previousX = e.getX();
  313.       previousY = e.getY();
  314.       repaint();
  315.     }
  316.  
  317.     @Override
  318.     public void mouseMoved(MouseEvent e){}
  319.  
  320.     @Override
  321.     public void mouseWheelMoved(MouseWheelEvent e)
  322.     {
  323.       if(e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL)
  324.       {
  325.         if(groesseX > 0)
  326.         {
  327.           groesseX += e.getWheelRotation();
  328.           groesseY += e.getWheelRotation();
  329.         }
  330.         else
  331.         {
  332.           groesseX = 1;
  333.           groesseY = 1;
  334.         }
  335.       repaint();
  336.     }
  337.   }
  338. }
Advertisement
Add Comment
Please, Sign In to add comment