Problem mit Reihnfolge

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,

ich habe mal eine Frage ich habe ein Frame erstellt dessen Hintergrund sich aus drei Bildern zusammensetzt das ganze mit dem null Layout dazu gibt es noch zwei Buttons und nun will ich nich TextAreas hinzufügen. Mein problem jetzt ist es nur das man den TextArea nicht sieht... weil er scheinbar hinter der Bilder ist wie kann ich das ändern?

Code:
public class studio extends JFrame {


  // Anfang Variablen
  private JTextArea Anschrift = new JTextArea("",1,1);
  private JTextArea datuminfo = new JTextArea("",1,1);

  private JPanel panel1 = new JPanel(null);

  private Button Abrechnungen = new Button();
  private Button Lager = new Button();
  private JButton abr_fenster_ok = new JButton();   //wnd fenster
  private JButton drucken = new JButton();             //drucken
  
  
  public boolean abrechnungsuebergabe = false;


  private Image img;
  private Image img2;
  private Image img3;
  private Image img4;

  private AudioClip sound = JApplet.newAudioClip(getClass().getResource("alert_computer_error.wav"));


  private Choice Namen = new Choice();
  private Choice monat = new Choice();
  private Choice tag = new Choice();
  private Choice tag2 = new Choice();
  
  private Date datum = new Date();
  private Date datum2 = new Date();
  
  private Calendar cal = Calendar.getInstance();
  private Calendar cal2 = Calendar.getInstance();



  private JPanel wnd2panel = new JPanel();
  // Ende Variablen



  public studio(String title) {

    // Frame-Initialisierung


    super(title);

    sound.play();
    
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    
    
    int frameWidth = 800;
    int frameHeight = 600;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2 ;
    setLocation(x, y);
    setLayout(null);


    // Anfang Komponenten


    img = getToolkit().getImage("rechteleiste.jpg");
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(img, 0);
    try {
      mt.waitForAll();   //Warten, bis das Image vollständig geladen ist,
    } catch (InterruptedException e) {
    }
    repaint();



    img2 = getToolkit().getImage("untenmitte.jpg");
    MediaTracker mt2 = new MediaTracker(this.Anschrift);
    mt2.addImage(img2, 0);
    try {
      mt2.waitForAll();   //Warten, bis das Image vollständig geladen ist,
    } catch (InterruptedException e) {
    }
    repaint();



    img3 = getToolkit().getImage("hintergrund.jpg");
    MediaTracker mt3 = new MediaTracker(this);
    mt3.addImage(img3, 0);
    try {
      mt3.waitForAll();   //Warten, bis das Image vollständig geladen ist,
    } catch (InterruptedException e) {
    }
    repaint();



    img4 = getToolkit().getImage("logo2.jpg");
    MediaTracker mt4 = new MediaTracker(this);
    mt4.addImage(img4, 0);
    try {
      mt4.waitForAll();   //Warten, bis das Image vollständig geladen ist,
    } catch (InterruptedException e) {
    }
    repaint();




    Abrechnungen.setBounds(40, 80, 120, 50);
    Abrechnungen.setFont(new Font("Arial Black", Font.BOLD, 15));
    Abrechnungen.setLabel("Abrechnungen");
    add(Abrechnungen);
    Abrechnungen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        AbrechnungenActionPerformed(evt); } });



    Lager.setBounds(40, 150, 120, 50);
    Lager.setFont(new Font("Arial Black", Font.BOLD, 15));
    Lager.setLabel("Lager");
    add(Lager);
    Lager.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        LagerActionPerformed(evt); } });




    //KANN MAN EINFACH NICHT SEHEN WARUM NICHT ? ? ?
    datuminfo.setFont(new Font("Arial Black", Font.BOLD, 15));
    add(Anschrift);
    datuminfo.append(datum.toString());
    datuminfo.setBounds(50, 52, 50, 20);



    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }


  // Anfang Ereignisprozeduren
  
  
  public void paint(Graphics g)
  {

       g.drawImage(img,650,20, this);             //Bild Zeichnen
       g.drawImage(img2,0,514, this);   //Bild Zeichnen
       g.drawImage(img3,0,0, this);               //Bild Zeichnen

       setVisible(true);

  }
}

Und warum was wäre zB wenn ich jetzt noch ein Fenster hätte ? wie kann ich paint(Graphics g) sagen auf welchem fenster er das "draw"n soll?
 

Campino

Top Contributor
paint malt immer auf dem Fenster, wo es zu der Fensterklasse gehört.

Außerdem malt paint() auf dem Vordergrund, also immer über den Komponenten. Mit wenn du stattdessen paintComponents() verwendest, solltest du das Problem los sein. du musst aber als letzten Befehl "super.paintComponents()" aufrufen, damit deine Komponenten noch gemalt werden.

Last but not least wird paint jedesmal aufgerufen, wenn das Fenster neugezeichnet wird, also auch, wenn ein anderes darübergeschoben wurde, es minimiert wurde oder irgendsowas. "setVisible(true)" dient dazu, dass Fenster sichtbar zu machen, was wenn es gezeichnet wird, überflüssig ist, schließlich wird es nur gezeichnet, wenn es bereits sichtbar ist.
 
G

Gast

Gast
Super er zeigt schonmal keine Fehler an :) nur jetzt sehe ich die bilder nicht... sondern nur nen grauen hintergrund...

Code:
  public void paintComponents(Graphics g)
  {
       super.paintComponents(g);
       g.drawImage(img,650,20, this);             //Bild Zeichnen
       g.drawImage(img2,0,514, this);             //Bild Zeichnen
       g.drawImage(img3,0,0, this);               //Bild Zeichnen



  }
[\code]
 

Marco13

Top Contributor
paint von einem JFrame zu überschreiben ist ein bißchen heikel (ein paintComponent hat er glaubich garnicht?!). Es wäre günstiger, alles, was im Frame dargestellt werden soll, in ein JPanel zu legen, und bei diesem JPanel dann die paintComponent zu überschreiben.

Wie du da die "img" lädst ist ... hm. Wenn man ImageIO verwendet, braucht man keinen MediaTracker - also diese Blöcke
Code:
    img4 = getToolkit().getImage("logo2.jpg");
    MediaTracker mt4 = new MediaTracker(this);
    mt4.addImage(img4, 0);
    try {
      mt4.waitForAll();   //Warten, bis das Image vollständig geladen ist,
    } catch (InterruptedException e) {
    }
    repaint();
sollte man ersetzen können durch
Code:
    img4 = ImageIO.read(new FileInputStream("logo2.jpg"));

Und selbst wenn du das nicht machen willst, sollte dir aufgefallen sein, dass dort etliche Male "fast" der gleiche Code steht, und dass man dafür eine Methode machen könnte
Code:
private Image loadImage(String name)
{
    Image image = getToolkit().getImage(name);
    MediaTracker mt = new MediaTracker(this);
    mt4.addImage(image, 0);
    try {
      mt.waitForAll();   //Warten, bis das Image vollständig geladen ist,
    } catch (InterruptedException e) {
    }
    return image;
}
die man dann einfach mehrfach aufrufen kann
Code:
img = loadImage("rechteleiste.jpg");
img1 = loadImage("untenmitte.jpg");
...

Variablennamen schreibt man klein.

null-Layout sollte man i.a. nicht verwenden, wenn es keinen GANZ konkreten Grund dafür gibt.
 

Campino

Top Contributor
du musst aber als letzten Befehl "super.paintComponents()" aufrufen, damit deine Komponenten noch gemalt werden.
Wer lesen kann, ist klar im Vorteil ;) Das super.paintComponents soll der LETZTE Befehl sein. Nicht der erste.

paint von einem JFrame zu überschreiben ist ein bißchen heikel (ein paintComponent hat er glaubich garnicht?!). Es wäre günstiger, alles, was im Frame dargestellt werden soll, in ein JPanel zu legen, und bei diesem JPanel dann die paintComponent zu überschreiben.
Da JFrame von Container erbt, hat es auch ein paintComponents().
Gibt es einen konkreten Grund, warum man die nicht verwenden sollte?
(Gemacht habe ich es auch noch nicht, aber ich brauchte auch noch nie Bilder hinter Komponenten).

Du solltest deine Components aber in jedem Fall in die ContentPane des JFrames setzen und nicht direkt in das JFrame. Die ContentPane bekommst du über getContentPane(), sie hat dann eine add()- Funktion.
 

Marco13

Top Contributor
Ein paintComponents hat er, aber kein paintComponent. Warum ich es heikel finde: Der JFrame ist ein (oder "DER") Top-Level-Container - er ist das, was vom Betriebssystem/Fenstermanager die "echten" Ressourcen zugesprochen bekommt. Weißt du, was "paintComponents" macht? (D.h. ruft es auf den child-Components jeweils paint auf, oder paintComponent?) Ich weiß das nicht (weiß aber, dass er KEINS von beidem macht). Ich finde, man sollte dem JFrame nicht in sein Zeichnen reinpfuschen. Mit einem JPanel, das man in die ContentPane liegt, ist man auf der sicheren Seite.... Abgesehen davon ist man flexibler, wenn man später noch was am Layout ändern will.
 
G

Gast

Gast
ok also das mit dem JPanel habe ich jetzt gemacht nur jetzt habe ich immernoch das Problem das er mir die Hintergrund Bilder nicht anzeigt.... ich habe auch schon versucht das JPanel mit setOpaque(false) auf durchsichtig zu stellen um dann das dahinterliegende zu sehen aber man sieht trotzdem immernoch nichts von den Bildern...

Ich hatte es anfangs mit ContentPane aber es hat nicht geklapt das lustige ist ja das ich die Buttons sehen kann, diese sind vor den Bildern, aber das Textfeld nicht?!


@ Marco13 wie meinste du das:
paint malt immer auf dem Fenster, wo es zu der Fensterklasse gehört.

Also muss ich für ein anderes Fenster das gleiche nochmal Initiieren ? Wie kann ich paint denn sagen zu welcher Fensterklasse es gehört?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Problem mit Spring Boot Dependency Injection Java Basics - Anfänger-Themen 12
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben