zeichnen in JPanel

fleckdalm

Bekanntes Mitglied
Ein Freund hat mir das zeichnen unter Java erklärt aber anscheinend habe ich irgendetwas falsch verstanden, denn es erscheint nur ein leeres panel. Was mache ich falsch?
Ich habe folgendes geschrieben:
Code:
import java.awt.Graphics;
import javax.swing.JPanel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Dominik
 */
public class zeichnen extends JPanel{


    @Override
   public void paint(Graphics g){

       g.drawLine(100, 50, 120, 80);

   }
   
}

und in der GUI klasse noch das hier ergänzt:
Code:
public class GUI extends javax.swing.JFrame {

    /** Creates new form GUI */
    public GUI() {
        initComponents();
        zeichnen z=new zeichnen();
        z.add(panel);
    }

Danke für eure Hilfe ich kann meinen Freund nämlich nicht fragen da ich ihn jetzt länger nicht sehe.
mfg Fleckdalm
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
was ist denn panel im zweiten Code? wird überhaupt etwas in das JFrame eingefügt?

wenn dein ZeichenPanel nicht gerade in BorderLayout maximiert wird, dann braucht es wahrscheinlich noch eine setPrefererredSize()-Angabe,
sonst ist es nur 1x1 Pixel groß
 

fleckdalm

Bekanntes Mitglied
Ich habe jetzt beim Panel eine mindestgröße von 150 x 150 gesetzt.
Und auch das was SlaterB gesagt hat (soweit ich es verstanden habe) berücksichtigt.
Es erscheint aber trotzdem nur ein leeres Panel.
Der Code sieht jetzt so aus:

Java:
import java.awt.Graphics;
import javax.swing.JPanel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 *
 */
public class zeichnen extends JPanel{


    @Override
   public void paintComponent(Graphics g){
super.paintComponent(g);

       g.drawLine(100, 50, 120, 80);

   }
   
}

und diesmal gleich die ganze Gui klasse falls es was hilft:
Java:
public class GUI extends javax.swing.JFrame {

    /** Creates new form GUI */
    public GUI() {
        initComponents();
        zeichnen z=new zeichnen();
        z.add(panel);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        panel = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        panel.setMinimumSize(new java.awt.Dimension(150, 150));

        javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
        panel.setLayout(panelLayout);
        panelLayout.setHorizontalGroup(
            panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 459, Short.MAX_VALUE)
        );
        panelLayout.setVerticalGroup(
            panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 367, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(47, 47, 47)
                .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(20, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(19, 19, 19)
                .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(37, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JPanel panel;
    // End of variables declaration

}

Danke für eure schnellen Antworten!
mfg Fleckdalm
 
S

SlaterB

Gast
> z.add(panel);

->

panel.add(z);

Panel ist schon in der GUI, z muss in Panel, damit in die GUI,
bisher hat auch nur panel eine PreferredSize, z noch nicht
 
D

Dow Jones

Gast
Wenn ich das richtig sehe dann hast du im Moment nur einen leeren Frame und ein panel ("panel"), welches auf einem anderen panel("z") liegt. z wird dabei aber nirgends angezeigt. Versuch doch mal z zum Frame hinzuzufügen, also im Konstruktor noch sowas wie add(z) aufzurufen.
 

fleckdalm

Bekanntes Mitglied
> z.add(panel);

->

panel.add(z);

Panel ist schon in der GUI, z muss in Panel, damit in die GUI,
bisher hat auch nur panel eine PreferredSize, z noch nicht
Ich habe das jetzt abgeändert, und auch das add(z); von Dow Jones hinzugefügt:
Java:
    public GUI() {
        initComponents();
        zeichnen z=new zeichnen();
        panel.add(z);
        add(z);
    }
Aber es hilft nichts es ist immer noch nichts zu sehen. Was meinst du eigentlich mit ich soll eine PreferredSize für z festlegen? Das ist ja nur ein Objekt von der Klasse zeichnen, also geht das doch gar nicht oder? Die größe für die Linie wird ja schon in der zeichnen KLasse in der paintComponent methode festgelegt oder?
Wenn ihr wollt könnt ihr mich auch auf ein (anfängerfreundliches) tutorial verweisen.
Aber jedenfalls Danke, mfg Fleckdalm
 
S

SlaterB

Gast
> Das ist ja nur ein Objekt von der Klasse zeichnen

zeichnen erbt doch von JPanel, übrigens Klassen besser groß schreiben!,
wenn du z direkt einfügst, dann wirkt das BorderLayout, dann brauchst du keine setPreferredSize(),
hier ein lauffähiges Beispiel:

Java:
public class Test {
    public static void main(String[] args)  {
        EventQueue.invokeLater(new Runnable()   {
                public void run()    {
                    new GUI2().setVisible(true);
                }
            });
    }
}

class GUI2  extends JFrame {

    /** Creates new form GUI */
    public GUI2() {
        // initComponents();
        Zeichnen2 z = new Zeichnen2();
        add(z);
        setSize(300, 300); // Größe des JFrames, z wird darin derzeit maximal dargestellt
    }
}


class Zeichnen2  extends JPanel {
    @Override
    public void paintComponent(Graphics g)  {
        super.paintComponent(g);
        g.drawLine(100, 50, 120, 80);
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
D Wie kann meine Klasse in ein JPanel zeichnen? Java Basics - Anfänger-Themen 14
A JPanel: Zeichnen funktioniert nicht - Nur grauer Hintergrund Java Basics - Anfänger-Themen 9
B In einem JPanel zeichnen (Problem inerhalb eines Spieles) Java Basics - Anfänger-Themen 4
B Hindergrundfarbe in JPanel und Dreieck zeichnen Java Basics - Anfänger-Themen 4
F Hilfe beim Zeichnen in JPanel Java Basics - Anfänger-Themen 2
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
K 3D Fläche Zeichnen Java Basics - Anfänger-Themen 2
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
R Iterativ zeichnen Java Basics - Anfänger-Themen 1
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
V Speicherzustand zeichnen Java Basics - Anfänger-Themen 0
O Klappt nicht: Ein Panel neu zeichnen Java Basics - Anfänger-Themen 3
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
Mosquera f(x)=x² zeichnen Java Basics - Anfänger-Themen 5
J Graphen in Java zeichnen Java Basics - Anfänger-Themen 11
L Anfängerin möchte Linie zeichnen Java Basics - Anfänger-Themen 8
S Zeichnen mit Wiederholungen Java Basics - Anfänger-Themen 12
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Wie kann ich in Java eine Kurve aus Punkten zeichnen? Java Basics - Anfänger-Themen 25
snipesss Linie zeichnen ohne extra Klasse? Java Basics - Anfänger-Themen 3
C Umrisse von Bilddateien mithilfe Polygonen zeichnen Java Basics - Anfänger-Themen 5
G Aus einem Code ein Sequenzdiagramm zeichnen? Java Basics - Anfänger-Themen 1
K Rechtecke rekursiv zeichnen Java Basics - Anfänger-Themen 20
V Quadrate rekursiv zeichnen Java Basics - Anfänger-Themen 7
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
C Schleifenaufgabe - Molekül zeichnen Java Basics - Anfänger-Themen 6
K Ungenauigkeit beim Zeichnen von Funktionen Java Basics - Anfänger-Themen 6
H Linie zeichnen... Java Basics - Anfänger-Themen 16
N Treppe zeichnen Java Basics - Anfänger-Themen 1
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
M in Java zeichnen Java Basics - Anfänger-Themen 2
J JLabel Icon neu zeichnen Java Basics - Anfänger-Themen 2
J Rechteck zeichnen mit Canvas Java Basics - Anfänger-Themen 7
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
S Rechteck zeichnen Java Basics - Anfänger-Themen 2
S Ein Graphics Obejct mehrmals mit denselben Eigenschaften zeichnen lassen?!?!? Java Basics - Anfänger-Themen 4
S Wo beginnt ein Draw String zu zeichnen. Java Basics - Anfänger-Themen 4
S Paint Anwendung: Freihandlinien zeichnen Java Basics - Anfänger-Themen 4
llabusch Layout neu zeichnen lassen Java Basics - Anfänger-Themen 2
A Histogramm zeichnen Java Basics - Anfänger-Themen 2
S Punkt in Java zeichnen Java Basics - Anfänger-Themen 14
E Dreieck zeichnen Java Basics - Anfänger-Themen 3
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
C Hilfe beim Zeichnen Java Basics - Anfänger-Themen 8
D Haus zeichnen Java Basics - Anfänger-Themen 4
K Methoden Objekt auf JFrame zeichnen Java Basics - Anfänger-Themen 16
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
S Problem mit "Zeichnen auf Kommando" Java Basics - Anfänger-Themen 2
M Double Punkte Zeichnen Java Basics - Anfänger-Themen 7
S Funktionen zeichnen Java Basics - Anfänger-Themen 2
2 Bild auf JApplet zeichnen Java Basics - Anfänger-Themen 18
R 2D Grafik zeichnen Java Basics - Anfänger-Themen 4
F Line zeichnen und Werte ändern Java Basics - Anfänger-Themen 6
B Grafik zeichnen Java Basics - Anfänger-Themen 25
B Erste Schritte Weihnachtsbaum zeichnen Java Basics - Anfänger-Themen 6
N Per Button Kreis zeichnen Java Basics - Anfänger-Themen 8
T mehrere Punkte zeichnen ohne löschung Java Basics - Anfänger-Themen 4
J Für 3 Sekunden etwas bestimmtes zeichnen Java Basics - Anfänger-Themen 8
C Kreis nach Mausklick zeichnen Java Basics - Anfänger-Themen 5
C Auf Button-Druck zeichnen Java Basics - Anfänger-Themen 2
R Methoden Zeichnen auf Button-Druck durch Paint-Methode Java Basics - Anfänger-Themen 2
D Klassen Zeichnen von Figuren mittels vorgegebener Klasse Java Basics - Anfänger-Themen 3
J Schachbrett zeichnen Java Basics - Anfänger-Themen 9
J Innerhalb der Border zeichnen Java Basics - Anfänger-Themen 9
J Hoher Speicherverbrauch beim Zeichnen von Images aus einer ArrayList Java Basics - Anfänger-Themen 10
A Blitze mit Linien zeichnen Java Basics - Anfänger-Themen 15
U Kreis um Textfelder zeichnen Java Basics - Anfänger-Themen 4
R Balkendiagramm zeichnen Java Basics - Anfänger-Themen 14
J Bild anhand von Koordinaten zeichnen Java Basics - Anfänger-Themen 10
B GUI Parkplatz zeichnen Java Basics - Anfänger-Themen 10
S Mehrere Zeichnungen zeichnen Java Basics - Anfänger-Themen 16
A Linie Zeichnen Applet mit Double Wert Java Basics - Anfänger-Themen 3
F Image übertragen und zeichnen Java Basics - Anfänger-Themen 8
P Funktion zeichnen Java Basics - Anfänger-Themen 6
Q Zeichnen außerhalb der paint-methode Java Basics - Anfänger-Themen 7
T Transparente Bilder mit Graphics zeichnen Java Basics - Anfänger-Themen 17
T Sterne zeichnen Java Basics - Anfänger-Themen 4
M Bilder laden und zeichnen Java Basics - Anfänger-Themen 3
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
S X Zeichnen als Muster ausgeben Java Basics - Anfänger-Themen 5
P Kurven zeichnen Java Basics - Anfänger-Themen 5
I dauerhaftes zeichnen Java Basics - Anfänger-Themen 3
W Funktions-Graphen "zeichnen" Java Basics - Anfänger-Themen 2
J Bilder auf Bilder zeichnen Java Basics - Anfänger-Themen 8
I Rechteck Zeichnen Java Basics - Anfänger-Themen 9
W Zeichnen in Swing Java Basics - Anfänger-Themen 7
N Linie auf spezielle Area zeichnen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben