Paint-Methode aufrufen

Status
Nicht offen für weitere Antworten.

TheKing

Aktives Mitglied
Ich hab schon gegoogelt, aber nichts wirklich hilfreiches gefunden. Also:
Ich habe ein Fenster, mit einem einfachem JPanel und einem JButton. Wenn man auf den Button klickt soll ein Kreis ins JPanel gezeichnet werden.
Mit
Java:
Graphics grafik = getGraphics();
würde mir da schon eine Lösung einfallen.
Mit "public void paint(Graphics grafik) {".. aber nicht. Hat jemand eine Idee?
 

Der Müde Joe

Top Contributor
Man macht NIE getGraphics()

zeichnen tut man immer in der paintComponent methode, welche man überschreiben hat (im JPanel)
 

Lexi

Bekanntes Mitglied
Du überschreibst einfach die paintComponent von deinem Panel, in der bei einem gesetzten Flag ein Kreis in das Panel gezeichnet wird.
Wenn der Button gedrückt wird, setzt du das Flag auf true, repaintest das Panel und setzt danach das Panel wieder auf false.
 

Tobias

Top Contributor
Java:
public class KreisPanel extends JPanel {

    boolean drawCircle = false;

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if(drawCircle) {
             // Kreis zeichnen
        }
    }
}

In Swing wird in der Regel die Methode paintComponent() überschrieben, nicht die Methode paint().
Irgendwo außerhalb der paint*()-Methoden getGraphics() aufzurufen ist normalerweise ein Fehler, weil man damit meistens kein bzw nicht das richtige Graphics-Objekt erhält.
 

TheKing

Aktives Mitglied
ich hab mir mal kurz einen (nicht sehr ordentlichen :oops:) Code zusammengebastelt...
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package paint;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
 *
 * @author Admin
 */
public class Main extends JFrame implements ActionListener {

    private JButton knopf;
    private boolean button_click;

    public Main() {

       super("Java-Zeichnen");


       JPanel panel = new JPanel();
       knopf = new JButton("Drück");
       knopf.addActionListener(this);
       panel.setLayout(new GridLayout(6, 0));
       panel.add(knopf);
       setContentPane(panel);
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Main fenster = new Main();
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setSize(900, 900);
        fenster.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if (button_click == false) {
 button_click = true;
 } 
repaint();
        }


    public void paint(Graphics g) {
        g.setColor(Color.red);
        if (button_click) {
         int x = (int) (Math.random() * 901);
         int y = (int) (Math.random() * 901);
       g.fillRect(x, y, 100, 100);
       } 
    }


 }
 

TheKing

Aktives Mitglied
So:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package paint;


import javax.swing.*;
import java.awt.*;

/**
 *
 * @author Admin
 */
public class Main extends JFrame  {


    private JLabel label;
    private boolean button_click;

    public Main() {

       super("Java-Zeichnen");


       JPanel panel = new JPanel();
       panel.setLayout(new GridLayout(6, 0));

       label = new JLabel("Malen mit Java:");
       zeichne z =  new zeichne();

       panel.add(label);
       panel.add(z);
       
      setContentPane(panel);
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Main fenster = new Main();
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setSize(900, 900);
        fenster.setVisible(true);
    }



class zeichne extends JPanel {
    @Override

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.red);
        g.fillRect(100, 10, 100, 100);
       
    }

}
 }
 
Zuletzt bearbeitet:

TheKing

Aktives Mitglied
Ok. Da wir ja keinen neuen Thread eröffnen wollen:
Ich bin dabei ein kleines (betone "kleines") Spiel in Java zu programmieren. Da ich ja mit der Paint Methode sehr viele "ausernandersetzungen" hatte :D, hab ich noch ein paar kleine Test's gemacht. Aber es zeichnet mir nichts hin:????:L
Java:
package paint_test;

//Importieren 
import javax.swing.*;
import java.awt.*;

/**
 *
 * @author admin
 */
public class Main extends JFrame {

    public Main() {


        super("Paint");

        JPanel panel = new JPanel();

        Ball ball = new Ball();
        panel.add(ball);

        setContentPane(panel);
    }

    public class Ball extends JPanel {

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.red);
            g.drawRect(100, 100, 100, 100);

        }
    }

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
        
        Main fenster = new Main();
        fenster.setSize(600, 500);
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setVisible(true);
    }
}
Was ist daran falsch?:rtfm:;(
 

Schandro

Top Contributor
Das JPanel "panel" hat das FlowLayout als Layoutmanager per default gesetzt. Dieser stellt deine Instanz von Ball mit 10x10 Pixeln dar, da dies die default-Preferredsize von JPanel ist (und Ball ist ja ein JPanel...). Änder den Konstruktor z.b. auf das hier:
Java:
    public Main() {
        super("Paint");

        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());

        Ball ball = new Ball();
        panel.add(ball);

        add(panel);
    }
 
Zuletzt bearbeitet:

TheKing

Aktives Mitglied
:eek: Danke.JUHU

Könnte man das auch mit einem anderen Laayout Manager wie z.B dem GridLayout machen?
 

Leroy42

Top Contributor
:shock:

Sorry, habe auch keine Ahnung!

Aber besoffen bin ich doch noch gar nicht! :oops:

Wenn du statt
setContentPane(panel);
schreibst:
setContentPane(ball);

dann geht es komischerweise aber den
eigentlichen Fehler sehe ich auch nicht ???:L

Sollte doch eigentlich klappen.

Geh' dann mal lieber ins Wochenende. :oops:
 

Schandro

Top Contributor
Könnte man das auch mit einem anderen Laayout Manager wie z.B dem GridLayout machen?
Du kannst das Layout benutzen das dich glücklich macht. Du musst das Layout halt nur so wählen das alles so dargestellt wird wie du es willst. Grundsätzlich ist mit dem GridLayout aufjedenfall viel mehr möglich als mit dem BorderLayout.

Oder war das jetzt ne Frage danach wie der selbe Code mit dem GridBagLayout konkret aussehen würde? :bahnhof:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A paint() methode von externer Klasse aufrufen Java Basics - Anfänger-Themen 3
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
V paint()-methode manuell aufrufen? kein autostart erwuenscht Java Basics - Anfänger-Themen 3
T paint() wieder aus einder anderen methode aufrufen funzt nid Java Basics - Anfänger-Themen 2
F Swing - Fehler - Paint Methode Java Basics - Anfänger-Themen 7
S awt: paint Methode zeigt nichts an Java Basics - Anfänger-Themen 9
thet1983 start & paint Methode? Java Basics - Anfänger-Themen 0
D Wert einer Variable in paint-Methode verwenden Java Basics - Anfänger-Themen 2
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
T Vererbung Wann wird die Methode paint aufgerufen? Java Basics - Anfänger-Themen 4
A Aufruf der paint() Methode Java Basics - Anfänger-Themen 3
J paint-methode blockiert settings von JComponents Java Basics - Anfänger-Themen 5
R Methoden Zeichnen auf Button-Druck durch Paint-Methode Java Basics - Anfänger-Themen 2
Q Zeichnen außerhalb der paint-methode Java Basics - Anfänger-Themen 7
A Methoden Variablen in paint methode Java Basics - Anfänger-Themen 4
M paint-Methode funzt nicht Java Basics - Anfänger-Themen 11
D OOP paint() Methode aus Unterklasse anstoßen Java Basics - Anfänger-Themen 3
K Scrollbar - Bild - paint-Methode - zoom Java Basics - Anfänger-Themen 10
S Bild aus paint() Methode auslagern Java Basics - Anfänger-Themen 14
T Etwas an paint()-Methode übergeben? Java Basics - Anfänger-Themen 6
N paint methode statt Event-Handling-Methode Java Basics - Anfänger-Themen 3
H Paint Methode malt nicht im Panel Java Basics - Anfänger-Themen 4
S Frage zur paint-Methode Java Basics - Anfänger-Themen 3
B Applet: Event-Handling-Methode in start- bzw. paint-Methode Java Basics - Anfänger-Themen 7
G Nichtstatische Objekte in der paint()-Methode Java Basics - Anfänger-Themen 16
P paint Methode Java Basics - Anfänger-Themen 3
F Applets und die paint-Methode Java Basics - Anfänger-Themen 3
G start-oder paint-Methode anstatt Event-Handling-Methode? Java Basics - Anfänger-Themen 3
G Paint Methode löscht alles Java Basics - Anfänger-Themen 4
G Klassen und paint methode Java Basics - Anfänger-Themen 2
X Malen außerhalb der paint() Methode Java Basics - Anfänger-Themen 4
G Zeichnen ausserhalb der paint Methode Java Basics - Anfänger-Themen 4
V Problem mit der Anzeige einer paint-Methode in einem Panel Java Basics - Anfänger-Themen 2
C Ausgaben mit der Paint-Methode Java Basics - Anfänger-Themen 5
S Paint Anwendung: Freihandlinien zeichnen Java Basics - Anfänger-Themen 4
S Erste Schritte drawOval Problem in Paint Anwendung Java Basics - Anfänger-Themen 1
R Begrenzer Anzahl von paint() ? Java Basics - Anfänger-Themen 3
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
S Interface JButton etc. wird in JFrame mit paint() nicht angezeigt Java Basics - Anfänger-Themen 6
M Probleme mit paint() aus java.awt.Graphics Java Basics - Anfänger-Themen 2
L Paint() wird scheinbar nicht richtig ausgeführt Java Basics - Anfänger-Themen 8
N aus Container components paint Java Basics - Anfänger-Themen 2
J paint() vs repaint() Java Basics - Anfänger-Themen 3
A Problem mit paint() Java Basics - Anfänger-Themen 2
Dogge Problem mit paint(Graphics g) im Applet Java Basics - Anfänger-Themen 13
J Problem mit paint(Graphics g) Java Basics - Anfänger-Themen 4
L Erste Schritte Swing oder SWT Paint mit Grafikkarte? Java Basics - Anfänger-Themen 7
T paint() wird nicht aufgerufen Java Basics - Anfänger-Themen 2
K paint() mit einfügen Java Basics - Anfänger-Themen 14
K doppeltes paint beim Drucken Java Basics - Anfänger-Themen 8
F Eine Frage über paint() Funktion Java Basics - Anfänger-Themen 2
S [Applet] Objekte von init bei paint benutzen Java Basics - Anfänger-Themen 9
W repaint() ruft paint() nicht auf Java Basics - Anfänger-Themen 9
J Zweimal im gleichen Paint-Fenster malen Java Basics - Anfänger-Themen 8
V paint funktioniert nicht Java Basics - Anfänger-Themen 14
O Paint Programm mit Fehler Java Basics - Anfänger-Themen 2
K Problem mit Parameter von paint(Graphics g) Java Basics - Anfänger-Themen 3
Y im applet malen ohne repaint paint ? Java Basics - Anfänger-Themen 6
S Datentypen Paint Programm Java Basics - Anfänger-Themen 7
L Paint zeichnet nicht gespeicherte Objekte Java Basics - Anfänger-Themen 3
A paint() - warum nicht aufrufen? Java Basics - Anfänger-Themen 3
S super.paint() Java Basics - Anfänger-Themen 4
M Paint und JColorChooser Java Basics - Anfänger-Themen 12
G hintergrund wird nicht gezeichnet bei paint() Java Basics - Anfänger-Themen 3
K Wieso wird "paint" nicht ausgeführt ? Java Basics - Anfänger-Themen 2
K JPanel, JFrame, paint() und wo ist mein Viereck ? Java Basics - Anfänger-Themen 19
F Frage zu JPanel und Paint Java Basics - Anfänger-Themen 5
M Problem mit paint() und Container. Java Basics - Anfänger-Themen 8
B Paint(Component) und externe Objekte Java Basics - Anfänger-Themen 6
T rotes herz public void paint(Graphics g) Java Basics - Anfänger-Themen 2
G frage zu paint Java Basics - Anfänger-Themen 3
T Mehrere paint Methoden in unterschiedlichen Klassen Java Basics - Anfänger-Themen 7
G Hilfe in paint() ; zeichnen Java Basics - Anfänger-Themen 15
C Einfaches Paint-Programm Java Basics - Anfänger-Themen 9
T .paint() aufrufen Java Basics - Anfänger-Themen 23
S Paint Teilweise Zeitverzögert Java Basics - Anfänger-Themen 6
R paint problem Java Basics - Anfänger-Themen 6
G mit paint() ins JPanel malen. Java Basics - Anfänger-Themen 6
M Auf Panels oder Labels malen? (paint) Java Basics - Anfänger-Themen 9
G repaint in paint aufrufen? Java Basics - Anfänger-Themen 9
B Problem mit Einfügen von Choice (in ein Applet) aus Paint Java Basics - Anfänger-Themen 13
7 In Paint keine Schleife? Java Basics - Anfänger-Themen 13
G Paint auf Panel Java Basics - Anfänger-Themen 4
S paint() direkt auf JFrame seit 1.5 nicht mehr möglich? Java Basics - Anfänger-Themen 5
A Variablenübergabe in die Paint-Funktion Java Basics - Anfänger-Themen 4
D Zeichnen mit Paint zerstört ganzes Fenster Java Basics - Anfänger-Themen 5
T paint() ohne konstruktor aufzurufen? Java Basics - Anfänger-Themen 5
P paint() Java Basics - Anfänger-Themen 6
U paint Java Basics - Anfänger-Themen 8
C zu viele paint()'s. Java Basics - Anfänger-Themen 6
N Probleme mit paint() bei Implementierung in ein Panel Java Basics - Anfänger-Themen 4
Dilandau paint(Graphics g) { unbekannt in try{} / catch{} }? Java Basics - Anfänger-Themen 5
D von paint() und repaint() im Applet Java Basics - Anfänger-Themen 4
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben