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

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

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

Здравствуйте! Пишу графический редактор, но мне все непонятно, как работает Graphics, куда, например, в моем коде его впихивать и тд Пробовал написать, например,
Листинг программы
  1. Graphics g;
  2. g.drowChars(...);
Или
Листинг программы
  1. this.setBackGround(Colour.WHITE)
Но ничего не менялось, да и понятно, что тут явно неправильно
Листинг программы
  1. import javax.swing.*;
  2. import javax.swing.filechooser.FileNameExtensionFilter;
  3. import java.awt.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.awt.image.ImageObserver;
  7. import java.io.File;
  8. import java.text.AttributedCharacterIterator;
  9. import java.util.LinkedHashMap;
  10.  
  11. public class GraphicsEditor extends JFrame {
  12. File file; // Our selected file
  13. Graphics graphics;
  14. private ActionListener open = new ActionListener() { // Opens a file
  15. @Override
  16. public void actionPerformed(ActionEvent actionEvent) {
  17. JFileChooser chooser = new JFileChooser();
  18. FileNameExtensionFilter filter = new FileNameExtensionFilter(
  19. "JPG & GIF Images", "jpg", "gif", "png");
  20. chooser.setFileFilter(filter);
  21. if(JFileChooser.APPROVE_OPTION ==
  22. (chooser.showDialog(null, "Open"))) {
  23. file = chooser.getSelectedFile();
  24. }
  25. }
  26. };
  27. private ActionListener save = new ActionListener() { // Saves a file
  28. @Override
  29. public void actionPerformed(ActionEvent actionEvent) {
  30. JFileChooser chooser = new JFileChooser();
  31. File file = null;
  32. int r = chooser.showSaveDialog(null);
  33. /* if(JFileChooser.APPROVE_OPTION ==
  34. (chooser.showSaveDialog(null)))*/
  35.  
  36. }
  37. };
  38. /* Remove the full paths to the icons sometime*/
  39. ImageIcon whiteIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\white.png");
  40. ImageIcon blackIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\black.png");
  41. ImageIcon redIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\red.png");
  42. ImageIcon greenIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\green.png");
  43. ImageIcon yellowIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\yellow.png");
  44. ImageIcon blueIcon = new ImageIcon("D:\\java\\ideaprojects\\graphics editor\\Icons\\blue.png");
  45.  
  46. JButton white = new JButton(whiteIcon);
  47. JButton black = new JButton(blackIcon);
  48. JButton red = new JButton(redIcon);
  49. JButton green = new JButton(greenIcon);
  50. JButton yellow = new JButton(yellowIcon);
  51. JButton blue = new JButton(blueIcon);
  52.  
  53. private JMenu[] menus = {
  54. new JMenu("File")/*, new JMenu("Tools"),
  55. new JMenu("Size")*/
  56. };
  57. private JMenuItem[] items = {
  58. new JMenuItem("Open"), new JMenuItem("Save"),
  59. new JMenuItem("Save as")/*, new JMenuItem("Pencil"),
  60. new JMenuItem("Eraser"), new JMenuItem("Text"),
  61. new JMenuItem("1"), new JMenuItem("2"),
  62. new JMenuItem("2")*/
  63. };
  64. public GraphicsEditor() {
  65. for(int i = 0; i < items.length; i++)
  66. menus[i/3].add(items[i]);
  67. JMenuBar mb = new JMenuBar();
  68. for(JMenu jm : menus)
  69. mb.add(jm);
  70. setJMenuBar(mb);
  71. Dimension colours = new Dimension(15, 15);
  72. white.setPreferredSize(colours);
  73. black.setPreferredSize(colours);
  74. red.setPreferredSize(colours);
  75. green.setPreferredSize(colours);
  76. yellow.setPreferredSize(colours);
  77. blue.setPreferredSize(colours);
  78. add(white);
  79. add(black);
  80. add(red);
  81. add(green);
  82. add(yellow);
  83. add(blue);
  84.  
  85. items[0].addActionListener(open); // open a file
  86. items[1].addActionListener(save); // save the file
  87. setLayout(new FlowLayout());
  88. }
  89. public static void main(String[] args) {
  90. Swing.go(new GraphicsEditor(), 750, 550);
  91. }
  92. }

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

textual
Листинг программы
  1. import javax.imageio.ImageIO;
  2. import javax.swing.*;
  3. import javax.swing.filechooser.FileNameExtensionFilter;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.awt.image.BufferedImage;
  7. import java.io.File;
  8. import java.io.IOException;
  9.  
  10.  
  11. public class GraphicsEditor extends JFrame {
  12.     private final String[] IMAGE_NAMES = "white black yellow green red blue".split(" ");
  13.     private final Color[] IMAGE_COLORS = { Color.WHITE, Color.BLACK, Color.YELLOW, Color.GREEN, Color.RED,
  14.                                            Color.BLUE};
  15.  
  16.     private final String IMAGE_PATH = "D:/java/ideaprojects/graphics editor/Icons/";
  17.  
  18.     File file; // Our selected file
  19.     private GraphicsPanel jp = new GraphicsPanel(this);
  20.  
  21.     private JButton[] jButtons;
  22.  
  23.  
  24.     private ActionListener open = new ActionListener() { // Opens a file
  25.         @Override
  26.         public void actionPerformed(ActionEvent actionEvent) {
  27.             JFileChooser chooser = new JFileChooser();
  28.             FileNameExtensionFilter filter = new FileNameExtensionFilter(
  29.                     "JPG & GIF Images", "jpg", "gif", "png");
  30.             chooser.setFileFilter(filter);
  31.             if (JFileChooser.APPROVE_OPTION ==
  32.                     (chooser.showDialog(null, "Open"))) {
  33.  
  34.                 file = chooser.getSelectedFile();
  35.             }
  36.  
  37.             ImageIcon image = new ImageIcon(chooser.getSelectedFile().getPath());
  38.             jp.setImage(image);
  39.             repaint();
  40.  
  41.         }
  42.     };
  43.  
  44.     private ActionListener save = new ActionListener() { // Saves a file
  45.         @Override
  46.         public void actionPerformed(ActionEvent actionEvent) {
  47.             JFileChooser chooser = new JFileChooser();
  48.             File file = null;
  49.             int r = chooser.showSaveDialog(null);
  50.            /* if(JFileChooser.APPROVE_OPTION ==
  51.                     (chooser.showSaveDialog(null)))*/
  52.             BufferedImage image = jp.getImage();
  53.             try {
  54.                 ImageIO.write(image, "jpg", chooser.getSelectedFile());
  55.             } catch (IOException e) {
  56.                 e.printStackTrace();
  57.             }
  58.  
  59.         }
  60.     };
  61.  
  62.     private ActionListener bListener = new ActionListener() {
  63.         @Override
  64.         public void actionPerformed(ActionEvent e) {
  65.             JButton jButton = (JButton) e.getSource();
  66.             for (int i = 0; i < jButtons.length; i++) {     // порядок цветов такой же как имен картинок
  67.                 if (jButton == jButtons[i]) {               // порядок кнопок такой же как имен картинок
  68.                     jp.setPenColor(IMAGE_COLORS[i]);    // задаем цвет карандаша по кнопке
  69.                     return;
  70.                 }
  71.             }
  72.         }
  73.     };
  74.  
  75.  
  76.     private MouseMotionListener mMListener = new MouseMotionListener() {
  77.         @Override
  78.         public void mouseDragged(MouseEvent e) {
  79.             jp.add(e.getX(),e.getY());
  80.             repaint();
  81.  
  82.         }
  83.  
  84.         @Override
  85.         public void mouseMoved(MouseEvent e) {
  86.  
  87.         }
  88.     };
  89.  
  90.     private MouseListener mListener = new MouseAdapter() {
  91.         @Override
  92.         public void mousePressed(MouseEvent e) {
  93.             jp.setPressed(true);
  94.         }
  95.  
  96.         @Override
  97.         public void mouseReleased(MouseEvent e) {
  98.             jp.setPressed(false);
  99.  
  100.         }
  101.  
  102.     };
  103.  
  104.     /* Remove the full paths to the icons sometime*/
  105.     private JMenu[] menus = {
  106.             new JMenu("File")/*, new JMenu("Tools"),
  107.             new JMenu("Size")*/
  108.     };
  109.  
  110.     private JMenuItem[] items = {
  111.             new JMenuItem("Open"), new JMenuItem("Save"),
  112.             new JMenuItem("Save as")/*, new JMenuItem("Pencil"),
  113.             new JMenuItem("Eraser"), new JMenuItem("Text"),
  114.             new JMenuItem("1"), new JMenuItem("2"),
  115.             new JMenuItem("2")*/
  116.     };
  117.  
  118.     public GraphicsEditor() {
  119.         JPanel jpColors = new JPanel();//new GridLayout(1, 6));
  120.         jpColors.setPreferredSize(new Dimension(90, 20));
  121.  
  122.         Dimension bSize = new Dimension(15, 15);
  123.         jButtons = new JButton[IMAGE_NAMES.length]; // сколько имен столько и кнопок
  124.         for (int i = 0; i < jButtons.length; i++) {
  125.             ImageIcon image = new ImageIcon(IMAGE_PATH + IMAGE_NAMES[i] + ".png");
  126.             JButton b = new JButton(image);
  127.             b.setPreferredSize(bSize);
  128.             b.addActionListener(bListener);
  129.             jpColors.add(b);
  130.             jButtons[i] = b; // сохраняем если понадобится необязательно
  131.  
  132.         }
  133.  
  134.  
  135.         for (int i = 0; i < items.length; i++)
  136.             menus[i / 3].add(items[i]);
  137.  
  138.         JMenuBar mb = new JMenuBar();
  139.         for (JMenu jm : menus)
  140.             mb.add(jm);
  141.         setJMenuBar(mb);
  142.  
  143.  
  144.         add(jpColors, BorderLayout.NORTH);
  145.         jp.setBackground(Color.WHITE);
  146.         jp.addMouseListener(mListener);
  147.         jp.addMouseMotionListener(mMListener);
  148.  
  149.         add(jp);
  150.         items[0].addActionListener(open);  // open a file
  151.         items[1].addActionListener(save); // save the file
  152.  
  153.  
  154.     }
  155.  
  156.     public static void main(String[] args) {
  157.         SwingUtilities.invokeLater(new Runnable() {
  158.             @Override
  159.             public void run() {
  160.                 GraphicsEditor ge = new GraphicsEditor();
  161.  
  162.                 ge.setSize(750, 550);
  163.                 ge.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  164.                 ge.setLocationRelativeTo(null);
  165.                 ge.setVisible(true);
  166.             }
  167.         });
  168.     }
  169. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут