G
Guest
Gast
So ich bin gerade dabei mir ein Malprogramm zu schreiben.
Kann dieses Problem jetzt wirklich schlecht beschreiben.
Haber quasi einmal die "Optionsleiste" die in einem Panel eingebettet ist und duch das BorderLayout nördlich ausgerichtet ist und einmal das "Malpapier", was im Zentrum liegt. Wenn ich jetzt etwas malen möchte, dann kopiert mir die Paint Methode, das Nördliche Panel samt Menubar in die oberen Bereich des "Malpapiers"...
Das Programm ist bei weitem nicht fertig und hat natürlich noch so seine Macken....
Auch den Algorithmus oder eher die Idee wie ich male ist nicht richtig ausgeprägt sondern war nur ein kurzer Testversuch ob es überhaupt so in die Richtung klappen würde, bin dann nur auf dieses Problem gestoßen und konnte es bisher noch nicht beheben....Dieses Problem muss jedenfalls jetzt erstmal aus dem Weg geschafft werden.
Zieht euch am besten mal den Quellcode und probiert es mal bei euch aus....
[/code]
Kann dieses Problem jetzt wirklich schlecht beschreiben.
Haber quasi einmal die "Optionsleiste" die in einem Panel eingebettet ist und duch das BorderLayout nördlich ausgerichtet ist und einmal das "Malpapier", was im Zentrum liegt. Wenn ich jetzt etwas malen möchte, dann kopiert mir die Paint Methode, das Nördliche Panel samt Menubar in die oberen Bereich des "Malpapiers"...
Das Programm ist bei weitem nicht fertig und hat natürlich noch so seine Macken....
Auch den Algorithmus oder eher die Idee wie ich male ist nicht richtig ausgeprägt sondern war nur ein kurzer Testversuch ob es überhaupt so in die Richtung klappen würde, bin dann nur auf dieses Problem gestoßen und konnte es bisher noch nicht beheben....Dieses Problem muss jedenfalls jetzt erstmal aus dem Weg geschafft werden.
Zieht euch am besten mal den Quellcode und probiert es mal bei euch aus....
Code:
/*
* Created on 22.03.2006
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package src;
import java.awt.Toolkit;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.*;
/**
* @author bbth3dbl
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class JavaPaintFrame extends JFrame {
//Attribute
private final int DEFAULTSIZEX = 800, DEFAULTSIZEY = 500;
private final Dimension thisScreen = Toolkit.getDefaultToolkit().getScreenSize();
private JSlider red = new JSlider(0,255,0), green = new JSlider(0,255,0), blue = new JSlider(0,255,0);
private JPanel northoptions = new JPanel();
private Container framePane = this.getContentPane();
private JLabel redlabel = new JLabel("Red: "+ red.getValue(),JLabel.RIGHT),
greenlabel = new JLabel("Green: "+ green.getValue(),JLabel.RIGHT),
colorlabel = new JLabel(""),
bluelabel = new JLabel("Blue: "+ blue.getValue(),JLabel.RIGHT);
private Color color = new Color(0,0,0);
private Paintpaper paper = new Paintpaper();
/*public Insets getInsets(){
return new Insets(0,0,0,0);
}//Method getInsets() end*/
public JavaPaintFrame(){
super("JavaPaint");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(DEFAULTSIZEX,DEFAULTSIZEY);
this.setLocation(thisScreen.width/2-getSize().width/2,thisScreen.height/2-getSize().height/2);
red.addChangeListener(new ChangeChecker());
green.addChangeListener(new ChangeChecker());
blue.addChangeListener(new ChangeChecker());
colorlabel.setBackground(Color.BLACK);
colorlabel.setOpaque(true);
northoptions.setLayout(new GridLayout(1,7,2,2));
northoptions.add(redlabel);
northoptions.add(red);
northoptions.add(greenlabel);
northoptions.add(green);
northoptions.add(bluelabel);
northoptions.add(blue);
northoptions.add(colorlabel);
//Menü wird initialisiert
JMenuBar menu = new JMenuBar();
JMenu datei = new JMenu("File");
JMenuItem item = new JMenuItem("New");
item.addActionListener(new MenuHandler());
datei.add(item);
item = new JMenuItem("Save");
item.addActionListener(new MenuHandler());
datei.add(item);
item = new JMenuItem("Open");
item.addActionListener(new MenuHandler());
datei.add(item);
item = new JMenuItem("Close");
item.addActionListener(new MenuHandler());
datei.add(item);
menu.add(datei);
JMenu hilfe = new JMenu("Help");
item = new JMenuItem("Info abaout JavaPaint");
item.addActionListener(new MenuHandler());
hilfe.add(item);
menu.add(hilfe);
setJMenuBar(menu);
//Radiobutton initialisierung
ButtonGroup buttoncontroller = new ButtonGroup();
northoptions.add(new JLabel("Options: ",JLabel.RIGHT));
JRadioButton button = new JRadioButton("Pen",true);
northoptions.add(button);
buttoncontroller.add(button);
button = new JRadioButton("Rect",false);
northoptions.add(button);
buttoncontroller.add(button);
button = new JRadioButton("Oval",false);
northoptions.add(button);
buttoncontroller.add(button);
button = new JRadioButton("Text",false);
buttoncontroller.add(button);
northoptions.add(button);
framePane.add(northoptions, BorderLayout.NORTH);
framePane.add(paper,BorderLayout.CENTER);
this.setVisible(true);
}//Constructor end
//subclasses
private class ItemChecker implements ItemListener{
public void itemStateChanged(ItemEvent e){
}//Method itemStateChanged() end
}//Subclass ItemChecker end
private class MenuHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
String command = e.getActionCommand();
command = command.toLowerCase();
if(command.equals("close")) System.exit(0);
else if(command.equals("new")){
paper.clear();
}//else if end
else if(command.equals("save")){
//noch nicht fertig
}//else if end
else if(command.equals("open")){
//noch nicht fertig
}//else if end
else if(command.startsWith("info")){
String output = "Programmer: Nils Bleisch\n"
+ "Copyright by Simply Programming 2006";
JOptionPane.showMessageDialog(null,output,"Information about JavaPaint",JOptionPane.PLAIN_MESSAGE);
}//else if end
}//Method actionPerformed() end
}//Subclass MenuHandler end
private class ChangeChecker implements ChangeListener{
public void stateChanged(ChangeEvent e) {
Object cmd = e.getSource();
if(cmd.toString().equals(red.toString())){
redlabel.setText("Red: "+ red.getValue());
redlabel.setForeground(new Color(red.getValue(),0,0));
}
else if(cmd.toString().equals(green.toString())){
greenlabel.setText("Green: "+ green.getValue());
greenlabel.setForeground(new Color(0,green.getValue(),0));
}
else if(cmd.toString().equals(blue.toString())){
bluelabel.setText("Blue: "+ blue.getValue());
bluelabel.setForeground(new Color(0,0,blue.getValue()));
}
color = new Color(red.getValue(),green.getValue(),blue.getValue());
colorlabel.setBackground(color);
paper.setColor(color);
}//Method stateChanged
}//subclass ItemChecker end
public static void main(String[] args){
JavaPaintFrame frame = new JavaPaintFrame();
}//Method main() end
}//class JavaPaintFrame end
Code:
/*
* Created on 22.03.2006
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package src;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.*;
/**
* @author bbth3dbl
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Paintpaper extends JLabel {
//Attribute
private Color color = Color.BLACK;
private int coordx = 0, coordy = 0;
private boolean clear = false;
public Paintpaper(){
setOpaque(true);
setBackground(Color.WHITE);
setForeground(Color.WHITE);
addMouseMotionListener(new MouseChecker());
clear();
}//Constructor end
public void setColor(Color color){
this.color = color;
}//Method
public void clear(){
clear = true;
}//Method clear() end
private class MouseChecker implements MouseMotionListener{
public void mouseDragged(MouseEvent e) {
coordx = e.getX();
coordy = e.getY();
repaint();
}
public void mouseMoved(MouseEvent e) {
}
}//Subclass MouseChecker end
public void update(Graphics g){
//paint(g);
}//Method update() end
public void paint(Graphics g){
//Penpaint
g.setColor(color);
g.fillOval(coordx-5,coordy-5,10,10);
//clear
if(clear){
g.setColor(getBackground());
System.out.println(getBackground());
System.out.println(getSize().width);
System.out.println(getSize().height);
g.fillRect(0,0,getSize().width,getSize().height);
clear=false;
}//if end
}//Method paint() end
}//class Paintpaper end
[/code]