Ο προγραμματισμός σε java απαιτεί υπομονή και μεθοδικότητα, και κατανόηση της υλοποίησης των αντικειμένων.
Επειδή όμως πάνω από όλα είναι αγάπη και διασκέδαση, σας παρουσιάζουμε μια απλή αλλά πλήρη εφαρμογή ζωγραφικής σε java που θα σας βοηθήσει να κατανοήσετε τις μεθόδους και τα αντικείμενα, την σύνδεση των δύο κλάσεων κτλ.

Η εφαρμογή χωρίζεται σε δύο κλάσεις την κλάση DrawArea και την κλάση Panel. Η μεν πρώτη αφορά την περιοχή ζωγραφικής και τι θα γίνεται όσο έχουμε πατημένο το πλήκτρο από το  ποντίκι η δε αφορά την κατασκευή του παραθύρου της εφαρμογής και των επιλογών της. Μπορείτε να την εμπλουτίσετε και να αναπτύξετε περισσότερο την εφαρμογή ορίζοντας τις δικές σας ρυθμίσεις κουμπιά χρώματα ακόμα και φόντο.

Καλή σας διασκέδαση και δημιουργία!!!



Κλάση DrawArea 

package MagPanel.Panel;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.*;
import javax.swing.JComponent;

public class DrawArea extends JComponent {
private Image image;
private Graphics2D g2;
private int currentX, currentY, oldX,oldY;

public  DrawArea(){
setDoubleBuffered(false);
addMouseListener(new MouseAdapter(){

public void mousePressed(MouseEvent  e) {
oldX= e.getX();
oldY= e.getY();

}

});

addMouseMotionListener(new MouseMotionAdapter(){

public void mouseDragged(MouseEvent e) {
currentX=e.getX();
currentY=e.getY();
if (g2!=null ){
g2.drawLine(oldX, oldY, currentX, currentY);
repaint();
oldX=currentX;
oldY= currentY;
}

}

});

}

 protected void paintComponent(Graphics g) {
if(image == null){
image = createImage(getSize().width, getSize().height);
g2= (Graphics2D) image.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

clear();

}
g.drawImage(image, 0, 0, null);

}

 public void clear(){
g2.setPaint(Color.white) ;
g2.fillRect(0, 0, getSize().width, getSize().width);
g2.setPaint(Color.black);
repaint();

 }

 public void Red(){
g2.setColor(Color.red);

 }

 public void Green(){
g2.setColor(Color.green);
 }
 public void Blue(){
g2.setColor(Color.blue);
 }
 public void Rumber(){
g2.setColor(Color.white);
 }


 }

Κλάση Panel

package MagPanel.Panel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Panel {
JButton clearButton, redButton, blueButton,greenButton, raberButton;
DrawArea drawarea;
ActionListener actionListener = new ActionListener(){

public void actionPerformed(ActionEvent e) {
if (e.getSource()== clearButton){
drawarea.clear();
}else if (e.getSource()== redButton){

drawarea.Red();
}else if (e.getSource()== blueButton){
drawarea.Blue();

}else if (e.getSource()==greenButton){
drawarea.Green();
}else if (e.getSource()== raberButton){
drawarea.Rumber();

}

}


};
/**
* @param args
*/
public static void main(String[] args) {
new Panel().show();
}
public void show(){
JFrame frame= new JFrame("Panel");
Container content = frame.getContentPane();
content.setLayout(new BorderLayout());
drawarea=new DrawArea();
content.add(drawarea, BorderLayout.CENTER);

JPanel controls= new JPanel();
 clearButton = new JButton("Clear");
 clearButton.addActionListener(actionListener);
 redButton= new JButton("Red");
 redButton.addActionListener(actionListener);
 blueButton =new JButton("Blue");
 blueButton.addActionListener(actionListener);
 greenButton= new JButton("Green");
 greenButton.addActionListener(actionListener);
 raberButton= new JButton("Raber");
 raberButton.addActionListener(actionListener);

 controls.add(clearButton);
 controls.add(redButton);
 controls.add(blueButton);
 controls.add(greenButton);
 controls.add(raberButton);

 content.add(controls, BorderLayout.NORTH);
 frame.setSize(600, 600);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setVisible(true);

}
}