Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import javax.imageio.ImageIO;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import java.net.URL;
- import java.awt.*;
- import javax.swing.*;
- import javax.swing.filechooser.FileNameExtensionFilter;
- public class WindowApp extends JFrame {
- private final static int BUTTONS_QUANTITY=3;
- private final static int WINDOW_SIZE_X=600;
- private final static int WINDOW_SIZE_Y=500;
- private JPanel drawPanel;
- private JPanel menuPanel;
- private JLabel label;
- private JButton openImageButton, saveImageButton;
- private JRadioButton colorRadioButtons[];
- private ButtonGroup colorGroup;
- private int prevMouseCoordX;
- private int prevMouseCoordY;
- private BufferedImage dbImage=null;
- WindowApp(){
- //drawPanel
- drawPanel = new JPanel(){
- @Override
- public void paintComponent(Graphics g){
- g.drawImage(dbImage,0,0,this);
- }
- };
- drawPanel.setDoubleBuffered(true);
- this.add(drawPanel, BorderLayout.CENTER);
- drawPanel.setFocusable(true);
- //menuPanel
- menuPanel=new JPanel();
- menuPanel.setLayout(new FlowLayout());
- this.add(menuPanel,BorderLayout.NORTH);
- //label
- label=new JLabel("Select color: ");
- menuPanel.add(label,BorderLayout.NORTH);
- //window
- setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- setSize(new Dimension(WINDOW_SIZE_X,WINDOW_SIZE_Y));
- setResizable(false);
- //buttons
- colorRadioButtons=new JRadioButton[BUTTONS_QUANTITY];
- colorGroup=new ButtonGroup();
- for(int i=0;i<BUTTONS_QUANTITY;i++){
- colorRadioButtons[i]=new JRadioButton(getColorString(i));
- colorGroup.add(colorRadioButtons[i]);
- menuPanel.add(colorRadioButtons[i]);
- }
- colorRadioButtons[0].setSelected(true);
- openImageButton=new JButton("Open image");
- saveImageButton=new JButton("Save image");
- menuPanel.add(openImageButton);
- menuPanel.add(saveImageButton);
- //listeners
- drawPanel.addMouseListener(new MouseAdapter() {
- @Override
- public void mousePressed(MouseEvent e) {
- super.mousePressed(e);
- prevMouseCoordX=e.getX();
- prevMouseCoordY=e.getY();
- }
- });
- drawPanel.addMouseMotionListener(new MouseMotionAdapter() {
- @Override
- public void mouseDragged(MouseEvent e) {
- Graphics graphics=drawPanel.getGraphics();
- if(dbImage==null) {
- dbImage = new BufferedImage(WINDOW_SIZE_X,WINDOW_SIZE_Y,BufferedImage.TYPE_3BYTE_BGR);//createImage(WINDOW_SIZE_X, WINDOW_SIZE_Y);
- Graphics dbStartGraphics=dbImage.getGraphics();
- dbStartGraphics.setColor(Color.WHITE);
- dbStartGraphics.fillRect(0,0,WINDOW_SIZE_X,WINDOW_SIZE_Y);
- graphics.setColor(Color.WHITE);
- graphics.fillRect(0,0,WINDOW_SIZE_X,WINDOW_SIZE_Y);
- }
- Graphics dbGraphics=dbImage.getGraphics();
- graphics.setColor(getColorButtonString());
- dbGraphics.setColor(getColorButtonString());
- graphics.drawLine(prevMouseCoordX,prevMouseCoordY,e.getX(),e.getY());
- dbGraphics.drawLine(prevMouseCoordX,prevMouseCoordY,e.getX(),e.getY());
- prevMouseCoordX=e.getX();
- prevMouseCoordY=e.getY();
- }
- });
- openImageButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- //File chooser
- JFileChooser fileOpen = new JFileChooser();
- FileNameExtensionFilter filter = new FileNameExtensionFilter(
- "JPG Images", "jpg");
- fileOpen.setFileFilter(filter);
- int ret = fileOpen.showOpenDialog(null);
- if(ret ==JFileChooser.APPROVE_OPTION){
- try {
- dbImage = ImageIO.read(fileOpen.getSelectedFile());
- setSize(new Dimension( dbImage.getWidth(),dbImage.getHeight()));
- Graphics graphics=drawPanel.getGraphics();
- graphics.drawImage(dbImage,0,0,null);
- }
- catch (IOException e1){
- JOptionPane.showMessageDialog(openImageButton, "Cannot open image.","Waring", JOptionPane.WARNING_MESSAGE);
- }
- }
- else{
- JOptionPane.showMessageDialog(openImageButton, "Cannot open image.","Waring", JOptionPane.WARNING_MESSAGE);
- }
- }
- });
- saveImageButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- JFileChooser fileSave = new JFileChooser();
- if(fileSave.showSaveDialog(null)==JFileChooser.APPROVE_OPTION){
- try {
- File file = new File(fileSave.getSelectedFile().getPath()+".jpg");
- if(dbImage!=null) {
- ImageIO.write( dbImage, "jpg", file);
- }
- else{
- JOptionPane.showMessageDialog(openImageButton, "Cannot save empty image.","Waring", JOptionPane.WARNING_MESSAGE);
- }
- }
- catch (IOException e1){
- JOptionPane.showMessageDialog(openImageButton, "Cannot save image.","Waring", JOptionPane.WARNING_MESSAGE);
- }
- }
- }
- });
- }
- private String getColorString(int i){
- if(i==0)
- return "red";
- if(i==1)
- return "green";
- if(i==2)
- return "blue";
- return "black";
- }
- private Color getColorButtonString(){
- if(colorRadioButtons[0].isSelected())
- return Color.red;
- if(colorRadioButtons[1].isSelected())
- return Color.green;
- if(colorRadioButtons[2].isSelected())
- return Color.blue;
- return Color.black;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement