Kleines Malprogramm

Status
Nicht offen für weitere Antworten.

hauke1981

Aktives Mitglied
Hallo,
ich hab als Projekt jetzt aufgetragen bekommen ein kleines Malprogramm zu schreiben. JEtzt habe ich mal ein PaintFrame geschrieben in dem ich malen kann was auch funktioniert. Jetzt will ich aber ein paar Buttons noch einfügen z.B.: öffnen oder speichern. Kann ich jetzt den ButtonFrame in den PaintFrame einfügen ?? Habs mal probiert und dann konnte ich nicht mehr schreiben. Weiss einer wie ich das lösen kann ???

Grüße
 

Sky

Top Contributor
Leider kenn' ich weder deinen ButtonFrame noch deinen PaintFrame...

- Bei JFrame könntest Du es über JMenuBar lösen

- Bei JFrame könntest Du es auch über 2 Panels lösen
 

hauke1981

Aktives Mitglied
Also beide Frames sind mit JFrame realisiert.
wie geht nochmal die lösung mit jmenubar hab ich schonmal gehört
 

hauke1981

Aktives Mitglied
Das mit dem Menü hab ich hinbekommen wie schaff ich das aber das ich beide felder (das zum malen und das wo das menü verankert ist) in einem fenster habe. Zur zeit werden bei mir zwei fenster aufgemacht.
 

Redfrettchen

Bekanntes Mitglied
Hi,
verwende statt einem Frame ein Panel zum Malen und füg dieses dann zum Menuframe hinzu:
Code:
JFrame frame = new JFrame();
setJMenubar(new MyMenubar());
PaintPanel p = new PaintPanel(); // PaintPanel extends JPanel
frame.add(p); // von mir aus auch gleich frame.add(new PaintPanel()));
 

hauke1981

Aktives Mitglied
Habs versucht aber des will irgendwie net klappen , hier ist mal das was ich bis jetzt hab kann sich das einer anschauen und mir dann nen tipp geben wie ich das schaff das das menu im gleichen fenster ist wie das malprogramm

Code:
class RGPaintPanel extends JPanel implements MouseListener, MouseMotionListener
{ private int ixpos = 0;
  private int iypos = 0;

  RGPaintPanel(String title)
  { addMouseListener(this);
    addMouseMotionListener(this);
  }

  public void mousePressed(MouseEvent e)
  { ixpos = e.getX();
    iypos = e.getY();
  }
  
  public void mouseDragged(MouseEvent e)
  { Graphics g = getGraphics();
    int ix = e.getX();
    int iy = e.getY();
    
    g.drawLine(ixpos, iypos, ix, iy);
    ixpos = ix;
    iypos = iy;
  }
  
  public void mouseClicked(MouseEvent e){}        
  public void mouseEntered(MouseEvent e){}        
  public void mouseExited(MouseEvent e){}        
  public void mouseReleased(MouseEvent e){}
  public void mouseMoved(MouseEvent e){}
}
__________________________________________________________________
class Menu extends JFrame
{ public Menu()
   {
      super ("Menu");
      // MenuBar der ContentPane am oberen Rand hinzufügen
      getContentPane().add (createMenuBar(), BorderLayout.NORTH);
      setSize (300, 100);
      RGPaintPanel p = new RGPaintPanel("Paint");
      Container contentPane = getContentPane();
      contentPane.add(p);
   }

   private JMenuBar createMenuBar()
   {
      // Menüleiste erzeugen
      JMenuBar menuBar = new JMenuBar();
      // Menü erzeugen
      JMenu draw = new JMenu ("Datei");
      // Menüeintrag erzeugen und
      // dem Menü hinzufügen
      draw.add (new JMenuItem ("Öffnen"));
      draw.add (new JMenuItem ("Speichern"));
      draw.add (new JMenuItem ("Beenden"));
      menuBar.add (draw);
      return menuBar;
   }
}
 

Redfrettchen

Bekanntes Mitglied
Warum machst du es nicht, wie ich es geschrieben habe?
Code:
public Menu() { 
      super ("Menu");
      setJMenubar(createMenuBar());
      setSize (300, 100);
      RGPaintPanel p = new RGPaintPanel("Paint"); 
      getContentPane().add(p);  
}
 

hauke1981

Aktives Mitglied
Ich habs hingekriegt ich ... hab beide anzeigen lassen mit *.show(); dann ist ja klar das beide geöffnet werden.

Nur weisst du wie ich die menüeinträge mit aktionen belege ? Z.B.: Schliessen oder Abspeichern ??
 

hauke1981

Aktives Mitglied
Ich weiss nicht ich steh gerade dowas von auf den schlauch :oops:

Wie ich das verbinde den menuitem und den actionlistener ?? WEiss grad net wie ich es schaffe das der meneintrag schliessen dann das programm beendet.
 

André Uhres

Top Contributor
Code:
...
        jMenuItem1 = new JMenuItem("Exit");
        jMenuItem1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
...
        draw.add (jMenuItem1); 
...
    private void jMenuItem1ActionPerformed(ActionEvent evt) {
        System.exit(0);
    }
...
    private JMenuItem jMenuItem1;
...
 

hauke1981

Aktives Mitglied
Nochmal was ich weiss kommt a bissle spät aber weiß einer zufälligerweise ob man wenn man was in dem programm das ich da geschrieben hab abspeichern kann oder geht das gar nicht ?? Gibt es sowas wie JTextArea auf für paintpanel oder so ??
 

André Uhres

Top Contributor
Code:
  private void Item2ActionPerformed(ActionEvent evt){ 
        try{
            generateJPGFileFromComponent(myDrawingPanel,file);
        } catch(Exception ex){
        }
   }
    /*
     * Generate jpg
     */
    public  BufferedImage generateBufferedImageFromComponent(Component component) {
        BufferedImage image = new BufferedImage(component.getWidth(), component.getHeight(), BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        g.setColor(component.getBackground());
        g.fillRect(0, 0,  image.getWidth(), image.getHeight());
        component.print(g);
        g.dispose();
        return image;
    }
    public  void generateJPGFileFromComponent(Component component, String filename) throws IOException {
        generateJPGFileFromComponent(component, new File(filename));
    }
    public  void generateJPGFileFromComponent(Component component, File file) throws IOException {
        BufferedImage image = generateBufferedImageFromComponent(component);
        ImageIO.write(image, "jpg", file);
    }

__________________________
Item2 = new JMenuItem("Speichern");
      Item2.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent evt) {
        Item2ActionPerformed(evt);
       }
      });
      datei.add(Item2);
 

hauke1981

Aktives Mitglied
Muss ich dann mein komplettes programm in den try catch konstrukt packen ??

das was du unter generate jpg geschrieben hast muss ich dann wie beim abspeichern direkt in die klasse des menüs schreiben oder ??
 

André Uhres

Top Contributor
>Muss ich dann mein komplettes programm in den try catch konstrukt packen ??

Nein

>das was du unter generate jpg geschrieben hast muss ich dann wie beim abspeichern direkt in die klasse des menüs schreiben oder ??

Ja
 

hauke1981

Aktives Mitglied
Stimmt das dann so ???
Code:
private void Item2ActionPerformed(ActionEvent evt)
   { BufferedImage generateBufferedImageFromComponent(Component component)
    {
        BufferedImage image = new BufferedImage(component.getWidth(), component.getHeight(), BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        g.setColor(component.getBackground());
        g.fillRect(0, 0,  image.getWidth(), image.getHeight());
        component.print(g);
        g.dispose();
        return image;
    }
    public  void generateJPGFileFromComponent(Component component, String filename) throws IOException
    {
        generateJPGFileFromComponent(component, new File(filename));
    }
    public  void generateJPGFileFromComponent(Component component, File file) throws IOException
    {
        BufferedImage image = generateBufferedImageFromComponent(component);
        ImageIO.write(image, "jpg", file);
    }
   }
__________________________
Item2 = new JMenuItem("Speichern");
      Item2.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent evt) {
        Item2ActionPerformed(evt);
       }
      });
      datei.add(Item2);
 

hauke1981

Aktives Mitglied
Nach langem mal wieder eine Frage von mir !!

Wie kann ich es machen das ich bei meinem Programm die x und y koordinate abspeichern kann ??? Mein Professor hat gemeint das sollte ich noch einfügen in mein Programm ...

Weiss das einer ??

Grüße
 

hauke1981

Aktives Mitglied
Mein Professor hat gemeint das man da eine x und y koordinate in einer textdatei abspeichern kann. Ich setz ja das Bild praktisch aus lauter kleinen Punkten zusammen vielleicht meint er da von den Punkten die Koordinaten. Er will dann halt in einem File (*.txt) nachher Koordinaten stehen haben.
Hilft dir das weiter ?
 

André Uhres

Top Contributor
hauke1981 hat gesagt.:
Mein Professor .. vielleicht meint er da .. Hilft dir das weiter ?
Nicht viel.
Ausserdem stört mich das "vielleicht".
Dir bleibt wohl nichts anderes übrig als den Professor zu fragen was er nun wirklich will.
 

hauke1981

Aktives Mitglied
Kann ich die Werte
Code:
public void mouseDragged(MouseEvent e)
  { Graphics g = getGraphics();
    int ix = e.getX();
    int iy = e.getY();
    
    g.drawLine(ixpos, iypos, ix, iy);
    [u]ixpos = ix;
    iypos = iy;[/u]  }

in eine Textdatei abspeichern ?? Die wo ich unterstrichen habe?
 

André Uhres

Top Contributor
hauke1981 hat gesagt.:
Kann ich die Werte
Code:
public void mouseDragged(MouseEvent e)
  { Graphics g = getGraphics();
    int ix = e.getX();
    int iy = e.getY();
    
    g.drawLine(ixpos, iypos, ix, iy);
    [u]ixpos = ix;
    iypos = iy;[/u]  }

in eine Textdatei abspeichern ?? Die wo ich unterstrichen habe?
Das ist möglich aber sinnlos.
 

hauke1981

Aktives Mitglied
Ich weiss aber leider will das mein Professor !! Wie kann ich auf die Variablen zugreifen bei mir kommt immer ein fehler??
Noch eine Frage: :oops: sorry für die vielen Fragen

Wie kann ich es machen das ich den Strich dann in Rot zeichnen kann. Hab folgendes mal probiert leider hats nicht funktioniert.


Code:
private void Item5ActionPerformed (ActionEvent evt)
   {
     Graphics g = getGraphics();
     g.setColor(Color.red);

   }

___________________________________________________

JMenu color = new JMenu ("Farbe");
      
      bearbeiten.add (color);
      Item5 = new JMenuItem("Rot");
      Item5.addActionListener(new ActionListener(){
        public void actionPerformed (ActionEvent evt){
          Item5ActionPerformed(evt);
        }
      });
      color.add(Item5);

Sollte doch so gehen oder ?? Der strich wird oben in der Klasse PaintPanel auch mit Graphics g = getGraphics(); realisiert!
 

hauke1981

Aktives Mitglied
Wie meinst du das ?? Mit in einem anderen Kontext?

Übrigends das mit dem Abspeichern hat funktioniert bei mir...
 

hauke1981

Aktives Mitglied
Wie kann ich das dann anstellen das ich in einer anderen Farbe zeichnen kann ??? Oder geht das so gar nicht wie ich das mir gedacht habe mit meinem Coding???
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
J Kleines Helikopterspiel programmieren AWT, Swing, JavaFX & SWT 2
J Verbesserungsvorschläge?! Kleines AWT Programm AWT, Swing, JavaFX & SWT 4
T Kleines Infofenster einblenen lassen AWT, Swing, JavaFX & SWT 3
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
F Kleines Fenster am Bildschirmrand AWT, Swing, JavaFX & SWT 3
C Swing Kleines Programm mit SWING unter Verwendung von MVC AWT, Swing, JavaFX & SWT 5
L Kleines Lückenprogrämmchen AWT, Swing, JavaFX & SWT 3
C kleines Chatprogramm, probleme mit JTextArea AWT, Swing, JavaFX & SWT 9
R JTable Header - will links kleines icon hinzufuegen..? AWT, Swing, JavaFX & SWT 6
D Swing Ein kleines Formatierungsproblem AWT, Swing, JavaFX & SWT 9
F kleines problem beim suchen in einem String AWT, Swing, JavaFX & SWT 15
T Ein kleines buntes Farbproblem AWT, Swing, JavaFX & SWT 7
V Thread als kleines splash AWT, Swing, JavaFX & SWT 13
C Mein erstes kleines Swing-Projekt - Probleme AWT, Swing, JavaFX & SWT 8
H Kleines SwingProgramm Frage AWT, Swing, JavaFX & SWT 14
J kleines Zeichenprogramm AWT, Swing, JavaFX & SWT 12
J Kleines Layout Problem AWT, Swing, JavaFX & SWT 5
B Kleines JFrame Problem (oder doch größer?) AWT, Swing, JavaFX & SWT 2
P Warum braucht mein kleines Programm 20 MB Speicher? AWT, Swing, JavaFX & SWT 13
D Kleines aber dummes Problem mit Turtle. AWT, Swing, JavaFX & SWT 4
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
A Swing Malprogramm Bild speichern? AWT, Swing, JavaFX & SWT 9
F Darstellungsfehler des Zeichnens im Malprogramm AWT, Swing, JavaFX & SWT 23
G Undo und Redo in Malprogramm AWT, Swing, JavaFX & SWT 4
P Rückgängig-Funktion im Malprogramm AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben