Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import javax.swing.*;
- import javax.swing.event.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- import javax.imageio.ImageIO;
- import java.awt.Robot;
- import java.awt.AWTException;
- import java.awt.Rectangle;
- import java.awt.image.BufferedImage;
- import java.awt.Frame;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- /**
- * @author Marcel
- * @version 1.0
- */
- public class Malprogramm extends JFrame
- {
- public PadDraw drawPad;
- public ButtonGroup modusGroup;
- public JMenuItem oval;
- public JSlider slider;
- // Main - Methode
- public static void main(String[] args){
- Malprogramm malen = new Malprogramm("Pinselfix");
- malen.pack();
- malen.setSize(1350, 680);
- malen.setResizable(false);
- malen.setVisible(true);
- }
- // Konstruktor
- public Malprogramm(String title)
- {
- // Superklasse "erben"
- super(title);
- drawPad = new PadDraw();
- add(drawPad, BorderLayout.EAST);
- //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- // Menubar erstellen
- JMenuBar mbar = new JMenuBar();
- setJMenuBar(mbar);
- // Menu "Datei" erstellen und dem Menubar hinzufügen
- JMenu datei = new JMenu("Datei");
- JMenuItem neu = new JMenuItem("Neu", new ImageIcon("neu.jpg"));
- JMenuItem speichern = new JMenuItem("Speichern", new ImageIcon("speichern.jpg" ));
- JMenuItem laden = new JMenuItem("Laden", new ImageIcon("laden.jpg" ));
- JMenuItem beenden = new JMenuItem("Beenden", new ImageIcon("beenden.jpg" ));
- mbar.add(datei);
- datei.add(neu);
- datei.add(speichern);
- datei.add(laden);
- datei.add(beenden);
- // Menu "Farben" erstellen und dem Menubar hinzufügen
- JMenu farben = new JMenu("Farben");
- JMenuItem gelb = new JMenuItem("Gelb");
- JMenuItem blau = new JMenuItem("Blau");
- JMenuItem rot = new JMenuItem("Rot");
- JMenuItem schwarz = new JMenuItem("Schwarz");
- JMenu mischfarben = new JMenu("Mischfarben");
- JMenuItem orange = new JMenuItem("Orange");
- JMenuItem rosa = new JMenuItem("Rosa");
- JMenuItem gruen = new JMenuItem("Grün");
- mbar.add(farben);
- farben.add(gelb);
- farben.add(blau);
- farben.add(rot);
- farben.add(schwarz);
- mischfarben.add(orange);
- mischfarben.add(rosa);
- mischfarben.add(gruen);
- farben.add(mischfarben);
- // Menu "Formen" erstellen und dem Menubar hinzufügen
- JMenu formen = new JMenu("Formen");
- JMenuItem oval = new JMenuItem("Oval");
- JMenuItem rechteck = new JMenuItem("Rechteck");
- JMenuItem dreieck = new JMenuItem("Dreieck");
- JMenu fgroesse = new JMenu("Formengröße");
- JMenuItem kreisa = new JMenuItem("Kreisgröße");
- JMenuItem rechtecka = new JMenuItem("Rechteckgröße");
- JMenuItem dreiecka = new JMenuItem("Dreieckgröße");
- formen.add(oval);
- formen.add(rechteck);
- formen.add(dreieck);
- formen.add(fgroesse);
- fgroesse.add(kreisa);
- fgroesse.add(rechtecka);
- fgroesse.add(dreiecka);
- mbar.add(formen);
- // Menu "Text" erstellen und dem Menubar hinzufügen
- JMenu text = new JMenu("Text");
- JMenuItem textHinzufuegen = new JMenuItem("Text hinzufuegen");
- JMenu schriftStil = new JMenu("Schriftstil");
- JMenuItem schriftGroesse = new JMenuItem("Schriftgröße");
- JMenuItem fett = new JMenuItem("Fett");
- JMenuItem kursiv = new JMenuItem("Kursiv");
- JMenuItem fettkursiv = new JMenuItem("Fett & Krusiv");
- text.add(textHinzufuegen);
- text.add(schriftStil);
- text.add(schriftGroesse);
- schriftStil.add(fett);
- schriftStil.add(kursiv);
- schriftStil.add(fettkursiv);
- mbar.add(text);
- // Menu "Sonstiges" erstellen und Menubar hinzufügen
- JMenu sonstiges = new JMenu("Sonstiges");
- JMenuItem bildEinfugen = new JMenuItem("Bild einfügen");
- sonstiges.add(bildEinfugen);
- mbar.add(sonstiges);
- // Container erstellen
- Box p1box = new Box(BoxLayout.Y_AXIS);
- Box p2box = new Box(BoxLayout.Y_AXIS);
- Box p3box = new Box(BoxLayout.Y_AXIS);
- // Slider erstellen
- slider = new JSlider(JSlider.HORIZONTAL, 0, 25, 1);
- slider.setPreferredSize(new Dimension(100, 50));
- slider.setMajorTickSpacing(5);
- slider.setMinorTickSpacing(1);
- slider.setPaintTicks(true);
- slider.setPaintLabels(true);
- slider.setVisible(true);
- // Buttons erstellen
- JButton breiteauswahlbox = new JButton("Breiteauswahlbox");
- JButton hintergrundfarbe = new JButton("Hintergrundfarbe");
- // Radiobuttons mit Buttongroups erstellen
- JRadioButton normal = new JRadioButton("Normal", true);
- JRadioButton radieren = new JRadioButton("Radieren", false);
- modusGroup = new ButtonGroup();
- modusGroup.add(normal);
- modusGroup.add(radieren);
- JRadioButton durchsichtig = new JRadioButton("Durchsichtig", true);
- JRadioButton gefuellt = new JRadioButton("Gefüllt", false);
- ButtonGroup fullGroup = new ButtonGroup();
- fullGroup.add(durchsichtig);
- fullGroup.add(gefuellt);
- // Komponenten dem Container hinzufügen
- p1box.add(Box.createRigidArea(new Dimension(10, 50)));
- p1box.add(new JLabel("Linienbreite auswählen:"));
- p1box.add(slider);
- p1box.add(Box.createRigidArea(new Dimension(50, 20)));
- p1box.add(p2box);
- p2box.add(breiteauswahlbox);
- p2box.add(Box.createRigidArea(new Dimension(50, 60)));
- p2box.add(p3box);
- p3box.add(new JLabel("Stiftmodus wählen:"));
- p3box.add(normal);
- p3box.add(radieren);
- p3box.add(Box.createRigidArea(new Dimension(50, 30)));
- p3box.add(new JLabel("Füllmuster wählen:"));
- p3box.add(durchsichtig);
- p3box.add(gefuellt);
- p3box.add(Box.createRigidArea(new Dimension(50, 100)));
- p3box.add(hintergrundfarbe);
- // Container dem Frame hinzufügen
- add(p1box, BorderLayout.WEST);
- //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- // Komponenten registrieren
- normal.setActionCommand("Normal");
- radieren.setActionCommand("Radieren");
- neu.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.clear();
- }
- });
- speichern.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.speichern();
- }
- });
- laden.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- }
- });
- beenden.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- System.exit( 0 );
- }
- });
- gelb.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.gelb();
- }
- });
- blau.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.blau();
- }
- });
- rot.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.rot();
- }
- });
- schwarz.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.schwarz();
- }
- });
- orange.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.orange();
- }
- });
- rosa.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.rosa();
- }
- });
- gruen.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.gruen();
- }
- });
- oval.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.oval();
- }
- });
- rechteck.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.rechteck();
- }
- });
- dreieck.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.dreieck();
- }
- });
- kreisa.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.kreisa();
- }
- });
- rechtecka.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.rechtecka();
- }
- });
- textHinzufuegen.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.textHinzufuegen();
- }
- });
- fett.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.schriftStilFett();
- }
- });
- kursiv.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.schriftStilKursiv();
- }
- });
- fettkursiv.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.fettkursiv();
- }
- });
- schriftGroesse.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.schriftGroesse();
- }
- });
- bildEinfugen.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.bildEinfuegen();
- }
- });
- slider.addChangeListener(new ChangeListener(){
- public void stateChanged(ChangeEvent e){
- drawPad.slider();
- }
- });
- breiteauswahlbox.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- drawPad.strichdicke();
- }
- });
- //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- // Programm ordnungsgemaeß schließen
- setDefaultCloseOperation( EXIT_ON_CLOSE );
- }
- public void getSlider() {
- JSlider b = this.slider;
- int i = 0;
- }
- class PadDraw extends JComponent{
- Image image;
- Graphics2D graphics2D;
- // Mausposititon speichern
- int currentX, currentY, oldX, oldY, x, y;
- // Konstruktor
- public PadDraw(){
- // Akutalisiert die Mauskoordinaten auf Mausklick
- addMouseListener(new MouseAdapter(){
- public void mousePressed(MouseEvent e){
- oldX = e.getX();
- oldY = e.getY();
- }
- });
- // Wenn die Maus gedrückt und geogen wird, wird eien Linie dorthin gezeichnet
- addMouseMotionListener(new MouseMotionAdapter(){
- public void mouseDragged(MouseEvent e){
- String label;
- ButtonModel aktuell;
- aktuell = modusGroup.getSelection();
- if(aktuell == null)
- return;
- label = aktuell.getActionCommand();
- currentX = e.getX();
- currentY = e.getY();
- // Hat hier eigentlich nichts verloren; ich müsste aber sonst deinen Code umschreiben, wozu mir grad die Zeit fehlt ^^
- if(label.equals("Normal")){
- graphics2D.setPaint(Color.black);
- }
- if(label.equals("Radieren")){
- graphics2D.setPaint(Color.white);
- }
- graphics2D.drawLine(oldX, oldY, currentX, currentY);
- repaint();
- oldX = currentX;
- oldY = currentY;
- }
- });
- }
- // Zeichenfläche erstellen
- public void paintComponent(Graphics g){
- if(image == null){
- image = createImage(getSize().width, getSize().height);
- graphics2D = (Graphics2D)image.getGraphics();
- graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- clear();
- }
- g.drawImage(image, 0, 0, null);
- }
- // Befehle für ActionListener
- public void speichern() { // Bildschirm Speichern
- try {
- Thread.sleep(600); // warten
- } catch(Exception e){System.out.println(e);}
- Robot r;
- try{
- r = new Robot();
- } catch(AWTException e){
- throw new IllegalArgumentException("No robot");
- }
- // Screenshotbereich erstellen
- int width = drawPad.getWidth();
- int height = drawPad.getHeight();
- Rectangle rect = new Rectangle( // X, Y Position
- (drawPad.getBounds().width - width), (drawPad.getBounds().height -height)
- // Größe
- ,width, height);
- // Namen der Datei (Screen + aktuelles Datum + aktuelle Zeit)
- SimpleDateFormat hour = new SimpleDateFormat("HH,mm,ss");
- SimpleDateFormat day = new SimpleDateFormat("dd.MM.yyyy");
- String zeit = hour.format(new Date());
- String name = String.format("Screen %s %s.png", day.format(new Date()), zeit);
- //name = System.getProperty("user.home")+name; // Home Verzeichnis
- // Screenshot erzeugen
- BufferedImage bufferedImage = r.createScreenCapture(rect);
- try {
- ImageIO.write(bufferedImage, "png", new File(name));
- System.out.printf("%s OK",name);
- } catch( IOException ex) {
- ex.printStackTrace();
- System.out.printf("%s Fehler",name);
- }
- }
- public void gelb(){
- graphics2D.setPaint(Color.yellow);
- }
- public void blau(){
- graphics2D.setPaint(Color.blue);
- }
- public void rot(){
- graphics2D.setPaint(Color.red);
- }
- public void schwarz(){
- graphics2D.setPaint(Color.black);
- }
- public void orange(){
- graphics2D.setPaint(Color.orange);
- }
- public void rosa(){
- graphics2D.setPaint(Color.pink);
- }
- public void gruen(){
- graphics2D.setPaint(Color.green);
- }
- public void oval(){
- graphics2D.drawOval(oldX, oldY, 50, 50);
- repaint();
- }
- public void rechteck(){
- graphics2D.drawRect(oldX, oldY, 50, 50);
- repaint();
- }
- public void dreieck(){
- }
- public void textHinzufuegen(){
- int messageType = JOptionPane.QUESTION_MESSAGE;
- JFrame frame = new JFrame();
- String answer = JOptionPane.showInputDialog(frame,
- "Welcher Text?",
- "Texteingabebox", messageType);
- graphics2D.drawString(answer ,oldX, oldY);
- repaint();
- }
- public void schriftStilFett(){
- graphics2D.setFont(new Font("TimesRoman", Font.BOLD, 12));
- repaint();
- }
- public void schriftStilKursiv(){
- graphics2D.setFont(new Font("TimesRoman", Font.ITALIC, 12));
- repaint();
- }
- public void fettkursiv(){
- graphics2D.setFont(new Font("TimesRoman", Font.BOLD + Font.ITALIC, 12));
- repaint();
- }
- public void schriftGroesse(){
- int messageType = JOptionPane.QUESTION_MESSAGE;
- JFrame frame = new JFrame();
- String answer = JOptionPane.showInputDialog(frame,
- "Welche Größe?",
- "Schriftgrößeeingabebox", messageType);
- int groesse = Integer.parseInt(answer);
- graphics2D.setFont(new Font("TimesRoman" , Font.PLAIN, groesse));
- repaint();
- }
- public void kreisa(){
- int messageType = JOptionPane.QUESTION_MESSAGE;
- JFrame frame = new JFrame();
- String answer = JOptionPane.showInputDialog(frame,
- "Welche Größe?",
- "Kreisgrößeauswahlbox", messageType);
- int dicke = Integer.parseInt(answer);
- String answer2 = JOptionPane.showInputDialog(frame,
- "Welche Größe?",
- "Kreisgrößeauswahlbox", messageType);
- int dicke2 = Integer.parseInt(answer2);
- graphics2D.drawOval(oldX, oldY, dicke, dicke2);
- repaint();
- }
- public void rechtecka(){
- int messageType = JOptionPane.QUESTION_MESSAGE;
- JFrame frame = new JFrame();
- String answer = JOptionPane.showInputDialog(frame,
- "Welche Größe?",
- "Kreisgrößeauswahlbox", messageType);
- int dicke = Integer.parseInt(answer);
- String answer2 = JOptionPane.showInputDialog(frame,
- "Welche Größe?",
- "Kreisgrößeauswahlbox", messageType);
- int dicke2 = Integer.parseInt(answer2);
- graphics2D.drawRect(oldX, oldY, dicke, dicke2);
- repaint();
- }
- public void slider(){
- JSlider b = slider;
- int value = b.getValue();
- BasicStroke basic = new BasicStroke(value);
- graphics2D.setStroke(basic);
- }
- public void strichdicke(){
- int messageType = JOptionPane.QUESTION_MESSAGE;
- JFrame frame = new JFrame();
- String answer = JOptionPane.showInputDialog(frame,
- "Welche Linienbreite?",
- "Linienbreiteauswahlbox", messageType);
- float dicke = Float.parseFloat(answer);
- BasicStroke basic = new BasicStroke(dicke);
- graphics2D.setStroke(basic);
- }
- public void dreiecka(){
- }
- public void bildEinfuegen(){
- }
- public void clear(){
- graphics2D.setPaint(Color.white);
- graphics2D.fillRect(0, 0, getSize().width, getSize().height);
- graphics2D.setPaint(Color.black);
- repaint();
- }
- // liefert die minimale Größe des Images
- public Dimension getMinimumSize() {
- return new Dimension(1100, 600);
- }
- // Lieblingsgröße auf Minimalgröße setzen
- public Dimension getPreferredSize() {
- return getMinimumSize();
- }
- }
- }
Add Comment
Please, Sign In to add comment