Zeichnung in Container

Hdr

Mitglied
Hallo,
in meinem Programm soll mehrfach die gleiche Zeichnung verwendet werden.
In Visual Basic habe ich in diesem Fall die Zeichnung in einen Container verpackt und konnte diesen dann zusammen mit der Zeichnung nach Belieben vervielfachen oder verschieben.
In Java will es mir nicht gelingen, eine Zeichnung (z.B. mit drawLine, fillRect usw) innerhalb eines Containers (Canvas, Panel, JPanel, alles probiert) auszuführen. Die Befehle werden einfach nicht angenommen und in den Tutorials steht nichts dazu.
Weiß jemand Rat ?
 

Joker4632

Mitglied
Jap Code wäre nett, weil du das auf mehrer Arten machen kannst. So wie du klingst solltest du aber eine eigene Klasse zB MeineZeichnung extends JPanel erstellen wenn du das Ganze öfter nutzten willst.
Geht natürlich auch inline ohne eignene Klasse für einmalige Aktionen.

Z.B. so:
Java:
package fractalator.main.surface.components;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class MeineZeichnung extends JPanel {

    /**
     * Create the panel.
     */
    public MeineZeichnung() {

    }
   
    /**
     * Add Graphics
     */
   
    public void paint(Graphics g) {
        g.setColor(Color.RED);
        g.fillRect(0, 0, this.getWidth(), this.getHeight());
    }

}
 

Hdr

Mitglied
Danke, ich werde es pobieren. Zur Zeit habe ich aber die Schwierigkeit, dass ich schon das JPanel nicht auf dem Bildschirm dargestellt kriege. Die von Eclipse gemalten JPanels haben einen ganz anderen Quellcode und sind für draw.... usw Befehle unzugänglich.
 

Joker4632

Mitglied
Eigentlich nicht O.O Was genau möchtest du den Zeichenen? 2D dann wechsel zu Graphics2D dann spricht das Panel auch auf setStroke() (Linienstärke) und drawLine und co.

Hier Beispiel Frame, habe das Ganze aber jetzt inline gemacht. Wenn du das Panel öfter verwendeln willst würde ich wie oben schon gesagt/gezeigt ne extra Klasse aufmachen.
Java:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MeinTestFrame extends JFrame {

    private JPanel contentPane;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MeinTestFrame frame = new MeinTestFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MeinTestFrame() {
       
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
       
        //Panel (du musst es nicht als contentPane verwenden, dass ist jetzt nur hier so)
        contentPane = new JPanel(){
            public void paint(Graphics g) {
                //Simpel einfach rotes Panel
                g.setColor(Color.RED);
                g.fillRect(0, 0, this.getWidth(), this.getHeight());
               
                //g.drawImage(Image, x, y, this)
               
                Graphics2D g2 = (Graphics2D) g;
               
                //Linienstärke
                g2.setStroke(new BasicStroke(10.0f));
               
                //graues ungefülltes Rechteck
                g2.setColor(Color.GRAY);
                g2.drawRect(40, 40, 100, 100);
               
            }
        };
       
        contentPane.setLayout(null);
        setContentPane(contentPane);
    }

}
 

Hdr

Mitglied
Danke sehr für Deine Mühe !
Klappt aber immer noch nicht...auf dem Fenster ist gar nichts zu sehen.
Ich habe Deinen Quelltext Buchstabe für Buchstabe abgetippt und nur die Abmessungen des Frames vergrößert. Bitte, wo liegt der Fehler ?
 

Hdr

Mitglied
Das Hochladen hat wohl nicht geklappt, ich versuchs noch mal.
....Als TestFrame.java wird es nicht angenommen und als Testframe.txt ist es nicht lesbar.
Wie ladet Ihr Eure Dateien hoch ?
 

Anhänge

  • TestFrame.txt
    1,1 KB · Aufrufe: 2

Robat

Top Contributor
Wie ladet Ihr Eure Dateien hoch ?
Gar nicht - benutze bitte [code=Java]MY CODE[/code] Tags um deinen Code zu teilen. So kann man ihn auch zitieren :)

Ich habe Deinen Quelltext Buchstabe für Buchstabe abgetippt und nur die Abmessungen des Frames vergrößert. Bitte, wo liegt der Fehler ?
Das kann nicht sein.
Bei deinem Code fehlen wesentliche Zeilen was auch der Grund ist, dass nix angezeigt wird.
Der eigentlich Grund ist, dass du dein JPanel nirgendswo zu deinem JFrame hinzufügst.

Java:
JFrame f = new JFrame();
f.setSize(500, 500);
f.add(jpanel);

Die add() Methode fügst Komponenten hinzu. Damit solltest du dein JPanel deinem JFrame hinzufügen.


Off-Topic:
Kurze Anmerkung zu deinem / @Joker4632 seinem Code:
- Lass deine Klasse nicht von JFrame erben wenn du die Funktionalität nicht erweitern willst. Erstell lieber ein JFrame Object in deiner Klasse als globale Variable.
- Benutze nicht das null-Layout. Nutze lieber einen LayoutManager.
- Damit verbunden solltest du auch nicht die setBounds() Methode verwenden. Um die Größe eines JFrames zu verändern / setzen benutze die

Java:
setPreferredSize(Dimension d);
setMaximumSize(Dimension d);
setMinimumSize(Dimension d);

Methoden.

Gruß Robert
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java Array Zeichnung Skalieren und verschieben Java Basics - Anfänger-Themen 5
E Java Canvas Zeichnung Java Basics - Anfänger-Themen 2
S Über Button Zeichnung ändern Java Basics - Anfänger-Themen 5
J OOP GUI mit JTable und Zeichnung Java Basics - Anfänger-Themen 3
S Zeichnung der GUI kontrollieren Java Basics - Anfänger-Themen 9
R Zeichnung entfernen und neue Zeichnen lassen Java Basics - Anfänger-Themen 20
F Zeichnung verschwindet hinter Bild Java Basics - Anfänger-Themen 2
D Programm für Widestandsberechnung mit Zeichnung Java Basics - Anfänger-Themen 25
L zeichnung verschwindet nach komponenteneinfügung Java Basics - Anfänger-Themen 20
S Zeichnung drehen Java Basics - Anfänger-Themen 13
B Zeichnung auf dem Applet verschwindet Java Basics - Anfänger-Themen 13
R BorderLayout macht meine Zeichnung kaputt Java Basics - Anfänger-Themen 14
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
J Container Java Basics - Anfänger-Themen 1
B Schleife über einen Container Java Basics - Anfänger-Themen 7
M GUI- mehrere Komponenten auf Container adden Java Basics - Anfänger-Themen 2
Q Container sinn? Java Basics - Anfänger-Themen 3
O Container Inhalt auslesen Java Basics - Anfänger-Themen 2
N aus Container components paint Java Basics - Anfänger-Themen 2
A Schnellster Container Java Basics - Anfänger-Themen 21
JAVAnnik Container erstellen Java Basics - Anfänger-Themen 19
N Container löschen?! Java Basics - Anfänger-Themen 3
F Container Objekt herausfinden Java Basics - Anfänger-Themen 15
M zwei JApplets in einem Container + GUI-Komponente Java Basics - Anfänger-Themen 12
D Container mit eigener Klasse Java Basics - Anfänger-Themen 5
H Container Probleme Java Basics - Anfänger-Themen 2
G Container für [key,value] elemente ? Java Basics - Anfänger-Themen 7
G unbound classpath container Java Basics - Anfänger-Themen 1
M Problem mit paint() und Container. Java Basics - Anfänger-Themen 8
C Container Java Basics - Anfänger-Themen 2
M Container Java Basics - Anfänger-Themen 2
H mehrere container Java Basics - Anfänger-Themen 2
L aufruf mit container -> ausgabe Java Basics - Anfänger-Themen 12
E Zweiten Container anlegen Java Basics - Anfänger-Themen 5
D alten Container wieder aufrufen Java Basics - Anfänger-Themen 11
G Größe vom Container abfragen. Java Basics - Anfänger-Themen 4
G Buttons listen - Probleme mit Container Java Basics - Anfänger-Themen 6
G Panel in Container einfügen Java Basics - Anfänger-Themen 7
D JTextField in einem Container, danach auslesen Java Basics - Anfänger-Themen 10
sambalmueslie Probleme mit Container und Komponenten. Java Basics - Anfänger-Themen 3
J Bilder auf Container oder alternativen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben