Как работать с Graphics - Java

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Пишу графический редактор, но мне все непонятно, как работает Graphics, куда, например, в моем коде его впихивать и тд Пробовал написать, например,
Graphics g;
g.drowChars(...);
Или
this.setBackGround(Colour.WHITE)
Но ничего не менялось, да и понятно, что тут явно неправильно
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;
import java.io.File;
import java.text.AttributedCharacterIterator;
import java.util.LinkedHashMap;

public class GraphicsEditor extends JFrame {
    File file; // Our selected file
    Graphics graphics;
 
    private ActionListener open = new ActionListener() { // Opens a file
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            JFileChooser chooser = new JFileChooser();
            FileNameExtensionFilter filter = new FileNameExtensionFilter(
                    "JPG & GIF Images", "jpg", "gif", "png");
            chooser.setFileFilter(filter);
            if(JFileChooser.APPROVE_OPTION ==
                    (chooser.showDialog(null, "Open"))) {
 
                file = chooser.getSelectedFile();
            }
        }
    };
 
    private ActionListener save = new ActionListener() { // Saves a file
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            JFileChooser chooser = new JFileChooser();
            File file = null;
            int r = chooser.showSaveDialog(null);
           /* if(JFileChooser.APPROVE_OPTION ==
                    (chooser.showSaveDialog(null)))*/

        }
    };
 
   /* Remove the full paths to the icons sometime*/
 
   ImageIcon whiteIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\white.png");
   ImageIcon blackIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\black.png");
   ImageIcon redIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\red.png");
   ImageIcon greenIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\green.png");
   ImageIcon yellowIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\yellow.png");
   ImageIcon blueIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\blue.png");

   JButton white = new JButton(whiteIcon);
   JButton black = new JButton(blackIcon);
   JButton red = new JButton(redIcon);
   JButton green = new JButton(greenIcon);
   JButton yellow = new JButton(yellowIcon);
   JButton blue = new JButton(blueIcon);

    private JMenu[] menus = {
            new JMenu("File")/*, new JMenu("Tools"),
            new JMenu("Size")*/
    };
 
    private JMenuItem[] items = {
            new JMenuItem("Open"), new JMenuItem("Save"),
            new JMenuItem("Save as")/*, new JMenuItem("Pencil"),
            new JMenuItem("Eraser"), new JMenuItem("Text"),
            new JMenuItem("1"), new JMenuItem("2"),
            new JMenuItem("2")*/
    };
 
    public GraphicsEditor() {
        for(int i = 0; i < items.length; i++)
            menus[i/3].add(items[i]);
 
        JMenuBar mb = new JMenuBar();
        for(JMenu jm : menus)
            mb.add(jm);
        setJMenuBar(mb);
 
        Dimension colours = new Dimension(15, 15);
        white.setPreferredSize(colours);
        black.setPreferredSize(colours);
        red.setPreferredSize(colours);
        green.setPreferredSize(colours);
        yellow.setPreferredSize(colours);
        blue.setPreferredSize(colours);
 
        add(white);
        add(black);
        add(red);
        add(green);
        add(yellow);
        add(blue);

        items[0].addActionListener(open);  // open a file
        items[1].addActionListener(save); // save the file
 
        setLayout(new FlowLayout());
 
    }
 
    public static void main(String[] args) {
        Swing.go(new GraphicsEditor(), 750, 550);
    }
}

Решение задачи: «Как работать с Graphics»

textual
Листинг программы
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
 
public class GraphicsEditor extends JFrame {
    private final String[] IMAGE_NAMES = "white black yellow green red blue".split(" ");
    private final Color[] IMAGE_COLORS = { Color.WHITE, Color.BLACK, Color.YELLOW, Color.GREEN, Color.RED,
                                           Color.BLUE};
 
    private final String IMAGE_PATH = "D:/java/ideaprojects/graphics editor/Icons/";
 
    File file; // Our selected file
    private GraphicsPanel jp = new GraphicsPanel(this);
 
    private JButton[] jButtons;
 
 
    private ActionListener open = new ActionListener() { // Opens a file
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            JFileChooser chooser = new JFileChooser();
            FileNameExtensionFilter filter = new FileNameExtensionFilter(
                    "JPG & GIF Images", "jpg", "gif", "png");
            chooser.setFileFilter(filter);
            if (JFileChooser.APPROVE_OPTION ==
                    (chooser.showDialog(null, "Open"))) {
 
                file = chooser.getSelectedFile();
            }
 
            ImageIcon image = new ImageIcon(chooser.getSelectedFile().getPath());
            jp.setImage(image);
            repaint();
 
        }
    };
 
    private ActionListener save = new ActionListener() { // Saves a file
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            JFileChooser chooser = new JFileChooser();
            File file = null;
            int r = chooser.showSaveDialog(null);
           /* if(JFileChooser.APPROVE_OPTION ==
                    (chooser.showSaveDialog(null)))*/
            BufferedImage image = jp.getImage();
            try {
                ImageIO.write(image, "jpg", chooser.getSelectedFile());
            } catch (IOException e) {
                e.printStackTrace();
            }
 
        }
    };
 
    private ActionListener bListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            JButton jButton = (JButton) e.getSource();
            for (int i = 0; i < jButtons.length; i++) {     // порядок цветов такой же как имен картинок
                if (jButton == jButtons[i]) {               // порядок кнопок такой же как имен картинок
                    jp.setPenColor(IMAGE_COLORS[i]);    // задаем цвет карандаша по кнопке
                    return;
                }
            }
        }
    };
 
 
    private MouseMotionListener mMListener = new MouseMotionListener() {
        @Override
        public void mouseDragged(MouseEvent e) {
            jp.add(e.getX(),e.getY());
            repaint();
 
        }
 
        @Override
        public void mouseMoved(MouseEvent e) {
 
        }
    };
 
    private MouseListener mListener = new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {
            jp.setPressed(true);
        }
 
        @Override
        public void mouseReleased(MouseEvent e) {
            jp.setPressed(false);
 
        }
 
    };
 
    /* Remove the full paths to the icons sometime*/
    private JMenu[] menus = {
            new JMenu("File")/*, new JMenu("Tools"),
            new JMenu("Size")*/
    };
 
    private JMenuItem[] items = {
            new JMenuItem("Open"), new JMenuItem("Save"),
            new JMenuItem("Save as")/*, new JMenuItem("Pencil"),
            new JMenuItem("Eraser"), new JMenuItem("Text"),
            new JMenuItem("1"), new JMenuItem("2"),
            new JMenuItem("2")*/
    };
 
    public GraphicsEditor() {
        JPanel jpColors = new JPanel();//new GridLayout(1, 6));
        jpColors.setPreferredSize(new Dimension(90, 20));
 
        Dimension bSize = new Dimension(15, 15);
        jButtons = new JButton[IMAGE_NAMES.length]; // сколько имен столько и кнопок
        for (int i = 0; i < jButtons.length; i++) {
            ImageIcon image = new ImageIcon(IMAGE_PATH + IMAGE_NAMES[i] + ".png");
            JButton b = new JButton(image);
            b.setPreferredSize(bSize);
            b.addActionListener(bListener);
            jpColors.add(b);
            jButtons[i] = b; // сохраняем если понадобится необязательно
 
        }
 
 
        for (int i = 0; i < items.length; i++)
            menus[i / 3].add(items[i]);
 
        JMenuBar mb = new JMenuBar();
        for (JMenu jm : menus)
            mb.add(jm);
        setJMenuBar(mb);
 
 
        add(jpColors, BorderLayout.NORTH);
        jp.setBackground(Color.WHITE);
        jp.addMouseListener(mListener);
        jp.addMouseMotionListener(mMListener);
 
        add(jp);
        items[0].addActionListener(open);  // open a file
        items[1].addActionListener(save); // save the file
 
 
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                GraphicsEditor ge = new GraphicsEditor();
 
                ge.setSize(750, 550);
                ge.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                ge.setLocationRelativeTo(null);
                ge.setVisible(true);
            }
        });
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5