Advertisement
YauhenMardan

release

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