• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[Java] Bei Button klick paint(g)

Status
Für weitere Antworten geschlossen.

RaZ0oR

Neues Mitglied
Hi,
ich bin gerade am Java lernen bzw. versuchen zu lernen :D. Ich habe bis jetzt ein kleines Progamm hinbekommen, mit den mann etwas ganz einfaches zeichnen kann. Das gezeichnete kann man bis jetzt noch nicht löschen, daher wollte ich mal fragen, was ich bei dem Code ergänzen muss, dass wenn man auf den Löschen button klickt
Code:
paint(g);
ausgeführt wird.

Der Code
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class malen extends JFrame {
	 CMeinCanvas m_malfläche;    
	 ButtonGroup  m_formauswahl;
	 JButton löschen;
	 
	int m_Xpos;
	int m_Ypos;
	
	public static void main(String[] args) {
		malen fenster = new malen("Mal mit mir :D");
		 fenster.pack();
		 fenster.setSize(500,400);
		 fenster.setResizable(false);
		 fenster.setVisible(true);
		
	}
	
		malen(String titel) {
			super(titel);
		
			setLayout(new FlowLayout());
			m_malfläche = new CMeinCanvas();
			add(m_malfläche);
			
			löschen = new JButton("Löschen");
			
			JPanel panel = new JPanel();
				panel.setLayout(new GridLayout(5,1,20,20));
				m_formauswahl = new ButtonGroup();
				
				JRadioButton opt1 = new JRadioButton("Kreis",false);
				JRadioButton opt2 = new JRadioButton("Scheibe",false);
				JRadioButton opt3 = new JRadioButton("Rechteck",false);
				JRadioButton opt4 = new JRadioButton ("Freihand",false); 
								
				opt1.setActionCommand("Kreis");
				opt2.setActionCommand("Scheibe");
				opt3.setActionCommand("Rechteck");
				opt4.setActionCommand("Freihand");
								
				m_formauswahl.add(opt1);
				m_formauswahl.add(opt2);
				m_formauswahl.add(opt3);
				m_formauswahl.add(opt4);
								
				panel.add(opt1);
				panel.add(opt2);
				panel.add(opt3);
				panel.add(opt4);
				panel.add(löschen);
				
				add(panel);
				setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
				
				
		}
				
				class CMeinCanvas extends Canvas {
					
					   class CMeinMausMotionAdapter extends MouseMotionAdapter {
					      public void mouseDragged(MouseEvent e) {
					        ButtonModel aktuell;
					        String label;

					     
					        aktuell = m_formauswahl.getSelection();

					      
					        if(aktuell == null)
					          return;

					        label = aktuell.getActionCommand();

					        
					        if(label.equals("Freihand"))  {
					          Graphics tmp = m_malfläche.getGraphics();
					          m_Xpos = e.getX();
					          m_Ypos = e.getY();
					          tmp.drawOval(m_Xpos,m_Ypos,2,2);
					        }
					      }
					    }
					
					
					
					
					class CMeinMausAdapter extends MouseAdapter {
					public void mousePressed(MouseEvent e) {
						
						m_Xpos = e.getX();
						m_Ypos = e.getY();
						
						repaint();
					}
				}
				
					CMeinCanvas() {
					addMouseListener(new CMeinMausAdapter());
					addMouseMotionListener(new CMeinMausMotionAdapter());
					
					setBackground(Color.black);
					setForeground(Color.green);
					}
					
					public void update(Graphics g) {
						String label;
						ButtonModel aktuell = null;
						
						aktuell = m_formauswahl.getSelection();
						
						if(aktuell == null)
							return;
						
						int w = (int) (Math.random()*300);
						int h = (int) (Math.random()*300);
						label = aktuell.getActionCommand();
						
						if(label.equals("Kreis"))
							g.drawOval(m_Xpos,m_Ypos,w,w);
						if(label.equals("Scheibe"))
							g.fillOval(m_Xpos,m_Ypos,w,h);
						if(label.equals("Rechteck"))
							g.drawRect(m_Xpos,m_Ypos,w,h);
						}
					
					public Dimension getMinimumSize() {
					      return new Dimension(300,300);
					    }

					      public Dimension getPreferredSize() {
					      return getMinimumSize();
					    }
				
				}
		}
Im Anhang ist das Programm...
 

Anhänge

  • malprogramm.zip
    4,5 KB · Aufrufe: 10
Werbung:
Hallo,

also bei mir funktioniert das .jar zwar, allerdings kann ich den Source nach dem kompilieren nicht ausführen ... Zudem sind extrem viele Kleinigkeiten die Du ändern musst laut Java Konvention.

Aber nun zu Deinem Problem.
Ich würde einen Listener an meinem Button registrieren und dann auf das Event reagieren.

In etwa so ...

Code:
/*
     * set listener to button "loeschen"
     */
    loeschen.addActionListener(new ActionListener()
    {
      /**
       * @see http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/ActionListener.html
       */
      public void actionPerformed(ActionEvent e)
      {
        /*
         * Hier kommt die Aktion rein die durchgefuehrt werden soll.
         */
      }
    });

Hoffe ich konnte Dir helfen.

Gruß Sven
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben