Advertisement
YauhenMardan

Untitled

Nov 25th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.49 KB | None | 0 0
  1. package com.company;
  2.  
  3. import javax.imageio.ImageIO;
  4. import javax.swing.*;
  5. import java.awt.*;
  6. import java.awt.event.*;
  7. import java.awt.image.BufferedImage;
  8. import java.io.File;
  9. import java.io.IOException;
  10. import java.net.URL;
  11.  
  12. import java.awt.*;
  13. import javax.swing.*;
  14. import javax.swing.filechooser.FileNameExtensionFilter;
  15.  
  16. public class WindowApp extends JFrame {
  17. private final static int BUTTONS_QUANTITY=3;
  18. private final static int WINDOW_SIZE_X=600;
  19. private final static int WINDOW_SIZE_Y=500;
  20.  
  21. private JPanel drawPanel;
  22. private JPanel menuPanel;
  23. private JLabel label;
  24. private JButton openImageButton, saveImageButton;
  25. private JRadioButton colorRadioButtons[];
  26. private ButtonGroup colorGroup;
  27.  
  28. private int prevMouseCoordX;
  29. private int prevMouseCoordY;
  30.  
  31. private BufferedImage dbImage=null;
  32.  
  33. WindowApp(){
  34. //drawPanel
  35. drawPanel = new JPanel(){
  36. @Override
  37. public void paintComponent(Graphics g){
  38. g.drawImage(dbImage,0,0,this);
  39. }
  40. };
  41. drawPanel.setDoubleBuffered(true);
  42. this.add(drawPanel, BorderLayout.CENTER);
  43. drawPanel.setFocusable(true);
  44. //menuPanel
  45. menuPanel=new JPanel();
  46. menuPanel.setLayout(new FlowLayout());
  47. this.add(menuPanel,BorderLayout.NORTH);
  48. //label
  49. label=new JLabel("Select color: ");
  50. menuPanel.add(label,BorderLayout.NORTH);
  51. //window
  52. setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  53. setSize(new Dimension(WINDOW_SIZE_X,WINDOW_SIZE_Y));
  54. setResizable(false);
  55. //buttons
  56. colorRadioButtons=new JRadioButton[BUTTONS_QUANTITY];
  57. colorGroup=new ButtonGroup();
  58. for(int i=0;i<BUTTONS_QUANTITY;i++){
  59. colorRadioButtons[i]=new JRadioButton(getColorString(i));
  60. colorGroup.add(colorRadioButtons[i]);
  61. menuPanel.add(colorRadioButtons[i]);
  62. }
  63. colorRadioButtons[0].setSelected(true);
  64. openImageButton=new JButton("Open image");
  65. saveImageButton=new JButton("Save image");
  66. menuPanel.add(openImageButton);
  67. menuPanel.add(saveImageButton);
  68. //listeners
  69. drawPanel.addMouseListener(new MouseAdapter() {
  70. @Override
  71. public void mousePressed(MouseEvent e) {
  72. super.mousePressed(e);
  73. prevMouseCoordX=e.getX();
  74. prevMouseCoordY=e.getY();
  75. }
  76. });
  77. drawPanel.addMouseMotionListener(new MouseMotionAdapter() {
  78. @Override
  79. public void mouseDragged(MouseEvent e) {
  80. Graphics graphics=drawPanel.getGraphics();
  81. if(dbImage==null) {
  82. dbImage = new BufferedImage(WINDOW_SIZE_X,WINDOW_SIZE_Y,BufferedImage.TYPE_3BYTE_BGR);//createImage(WINDOW_SIZE_X, WINDOW_SIZE_Y);
  83. Graphics dbStartGraphics=dbImage.getGraphics();
  84. dbStartGraphics.setColor(Color.WHITE);
  85. dbStartGraphics.fillRect(0,0,WINDOW_SIZE_X,WINDOW_SIZE_Y);
  86. graphics.setColor(Color.WHITE);
  87. graphics.fillRect(0,0,WINDOW_SIZE_X,WINDOW_SIZE_Y);
  88. }
  89. Graphics dbGraphics=dbImage.getGraphics();
  90. graphics.setColor(getColorButtonString());
  91. dbGraphics.setColor(getColorButtonString());
  92. graphics.drawLine(prevMouseCoordX,prevMouseCoordY,e.getX(),e.getY());
  93. dbGraphics.drawLine(prevMouseCoordX,prevMouseCoordY,e.getX(),e.getY());
  94. prevMouseCoordX=e.getX();
  95. prevMouseCoordY=e.getY();
  96. }
  97. });
  98. openImageButton.addActionListener(new ActionListener() {
  99. @Override
  100. public void actionPerformed(ActionEvent e) {
  101. //File chooser
  102. JFileChooser fileOpen = new JFileChooser();
  103. FileNameExtensionFilter filter = new FileNameExtensionFilter(
  104. "JPG Images", "jpg");
  105. fileOpen.setFileFilter(filter);
  106. int ret = fileOpen.showOpenDialog(null);
  107. if(ret ==JFileChooser.APPROVE_OPTION){
  108. try {
  109. dbImage = ImageIO.read(fileOpen.getSelectedFile());
  110. setSize(new Dimension( dbImage.getWidth(),dbImage.getHeight()));
  111. Graphics graphics=drawPanel.getGraphics();
  112. graphics.drawImage(dbImage,0,0,null);
  113. }
  114. catch (IOException e1){
  115. JOptionPane.showMessageDialog(openImageButton, "Cannot open image.","Waring", JOptionPane.WARNING_MESSAGE);
  116. }
  117. }
  118. else{
  119. JOptionPane.showMessageDialog(openImageButton, "Cannot open image.","Waring", JOptionPane.WARNING_MESSAGE);
  120. }
  121. }
  122. });
  123. saveImageButton.addActionListener(new ActionListener() {
  124. @Override
  125. public void actionPerformed(ActionEvent e) {
  126. JFileChooser fileSave = new JFileChooser();
  127. if(fileSave.showSaveDialog(null)==JFileChooser.APPROVE_OPTION){
  128. try {
  129. File file = new File(fileSave.getSelectedFile().getPath()+".jpg");
  130. if(dbImage!=null) {
  131. ImageIO.write( dbImage, "jpg", file);
  132. }
  133. else{
  134. JOptionPane.showMessageDialog(openImageButton, "Cannot save empty image.","Waring", JOptionPane.WARNING_MESSAGE);
  135. }
  136.  
  137. }
  138. catch (IOException e1){
  139. JOptionPane.showMessageDialog(openImageButton, "Cannot save image.","Waring", JOptionPane.WARNING_MESSAGE);
  140. }
  141. }
  142. }
  143. });
  144. }
  145. private String getColorString(int i){
  146. if(i==0)
  147. return "red";
  148. if(i==1)
  149. return "green";
  150. if(i==2)
  151. return "blue";
  152. return "black";
  153. }
  154. private Color getColorButtonString(){
  155. if(colorRadioButtons[0].isSelected())
  156. return Color.red;
  157. if(colorRadioButtons[1].isSelected())
  158. return Color.green;
  159. if(colorRadioButtons[2].isSelected())
  160. return Color.blue;
  161. return Color.black;
  162. }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement