repaint();

arietistv

Mitglied
Hallo, ich habe ein Fehler, den ich nicht ausmärzen kann.
Nachdem ich Google und das Forum durchsucht habe,
habe ich immernoch das Problem, dass sich mein JFrame nicht "umbemalt", habe ich mich entschlossen, mein Problem hier zu nennen:
Dieses Programm soll sich mit einem Server verbinden, um Daten abzufragen.
Es soll für meine Klasse als informationsplattform für die einzelnen Fächer dienen.
(Man Öffnet also z.B. Latein in der Suche.)
Darauf hin soll aus dem Netz die Lateindatei geladen und angezeigt werden.
Jedoch wird garnichts angezeigt.
Java:
package me.arietistv.files;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

@SuppressWarnings("serial")
public class run_me implements ActionListener {

    private JButton browse,ok;
  
    boolean show = false,deny = false;
  
    final JFrame f = new JFrame("");
  
    Account acc = new Account();
    Icon img = new ImageIcon((getClass().getResource("TextFile.png")));
    Icon img2 = new ImageIcon((getClass().getResource("ERROR.png")));
  
    public void ini() throws IOException{
        acc.loadUser(JOptionPane.showInputDialog("","Ihr Nutzername:"));
        if(acc.login(JOptionPane.showInputDialog("","Ihr Passwort:"))){
            System.out.println("Logged in successfull");
        }else{
            acc.loadUser(JOptionPane.showInputDialog("Unbekannte User/Passwort Kombination","Ihr Nutzername:"));
            if(acc.login(JOptionPane.showInputDialog("Unbekannte User/Passwort Kombination","Ihr Passwort:"))){
                System.out.println("Logged in successfull");
            }else{
                acc.loadUser(JOptionPane.showInputDialog("Unbekannte User/Passwort Kombination","Ihr Nutzername:"));
                if(acc.login(JOptionPane.showInputDialog("Unbekannte User/Passwort Kombination","Ihr Passwort:"))){
                    System.out.println("Logged in successfull");
                }else{
                    JOptionPane.showMessageDialog(null, "3 mal unbekannte User/Passwort Kombination!\nbeende......");
                    System.exit(0);
                }
            }
        }
        //acc.loadUser("9b");
        browse();
    }
  
    private void browse(){
      
        ok = new JButton("OK");
        browse = new JButton("Öffnen");
      
        ok.setBounds(0, 0, 0, 0);
        browse.setBounds(10, 0, 80, 30);
      
        ok.addActionListener(this);
        browse.addActionListener(this);
      
        ok.setBackground(Color.ORANGE);
        browse.setBackground(Color.orange);
      
        JButton leer = new JButton();
        leer.setVisible(false);
  
        f.setSize(800, 600);
        //f.setResizable(false);
        f.setLayout(null);
        f.setVisible(true);
      
        f.add(ok);
        f.add(browse);
      
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==browse){
            String s = JOptionPane.showInputDialog("", "File (z.B. Latein)");
            if(acc.hasPerm(s)){
                //TODO
            }else{
                browse.setVisible(false);
                ok.setBounds(10, 0, 80, 30);
                deny = true;
                f.repaint();
                f.validate();
            }
        }
        if(e.getSource()==ok){
            browse();
            deny = false;
            show = false;
        }
    }
  
    public void paint(Graphics g){

        Graphics2D f2 =(Graphics2D)g;
      
        f2.drawString("dwa", 200, 50);
        if(!show){
            ImageIcon img = new ImageIcon((getClass().getResource("ButtonOpen.png")));
            Image i = img.getImage();
            f2.drawImage(i, 13, 25, null);
        }
        if(deny){
            f2.drawString("Zugiff vewweigert (//001 - NOPERM)", 100, 100);
        }
    }
  
}
Code:
f.repaint();
f.validate();
f.pack();

f.repaint();
f.validate();

f.repaint();
f.pack();

f.pack();

f.repaint();

f.validate();

//Auch in anderer Reihnfolge
//Also z.B. repaint(); and Ende.
Das Brechtigungssystem (Account) funktioniert ohne Fehler.
Sollte man eine Datei abfragen, für die man keine Berechtigung hat, ändern sich auch die Knöpfchen. Nur die Info "Zugriff verweigert" wird nicht angezegt.
pack();
&
validate();
hab ich schon versucht.
solange das Problem existert, kann ich leider nicht weiterkommen, da das Programm dann ja auch den Inhalt der Dateien nicht anzeigen wird.

Ich hoffe, ich bekomme noch Hilfe,
ArietisTV
 
Zuletzt bearbeitet von einem Moderator:

strußi

Top Contributor
um den Account richtig zu validieren, wäre es doch einfacher in einer while-schleife abzufragen ob das Password nicht richtig ist.
Du bekommst jedesmal die Meldung
System.out.println("Logged in successfull");
bis aus den letzten fehlversuch.

wie wäre es wenn du in Account eine Methode hast loginPruefen die dir ein boolwert gibt, mit dem du weiter arbeitest
du nutzt zwar acc.loadUser(...); gibst aber keine userdaten mit sondern eine JOptionPane mit einer Nachricht.
angedeutet denke ich an sowas
while( loginPruefen() &&versuche <3){
userName &passwort eingeben
if versuche >=3 Nachricht und break;
}
 

arietistv

Mitglied
Danke aber da oben ist alles OK.
Der user gibt seinen Namen ein, dadurch wird geladen, welches Passwort er hat und welche Daten er einsehen darf. (Falls er sich beim ersten mal vertippt hat).
Das geht auch. Das Problem ist, dass wenn er eine Datei abfragt, welche er nicht sehen darf, die Fehlermeldung im frame nicht angezeigt wird.
Der boolean ist im Fälle des Verbotes true, dann wird repainted, gepackt...
Hab ich schon alles versucht.
Die Fenstergröße ändern half übrigens auch nicht.
 

thet1983

Top Contributor
Java:
f.setVisible(true);
sollte man immer am ende setzten...

schon mal den wert
Code:
deny
überprüft ob er wirklich true ausgibt
 

arietistv

Mitglied
1)
Was ist der unterschied, ob erst der button kommt oder erst das Fenster sichtbar ist?
2)
Nachdem den true ist, sollte beim repaint der Text gezeigt werden
Code:
deny = true;
repaint();
wird er aber nicht.
 

thet1983

Top Contributor
naja als erstes setzt du das fenster sichtbar und dann addest du erst die button....
ich hatte mal das problem das mir die komponenten nicht richtig angezeigt wurden.....

hast du es überprüft mit sysout ob wirklich true rauskommt, also wenn ich verschachtle dann prüfe ich immer mit sysout meine werte..
 

Harry Kane

Top Contributor
@TE: Du hast deine paint(Graphics g) Methode in der Klasse run_me implementiert. Und die ist kein JFrame.
Wenn Du ein Sysout eingebaut hättest, wäre dir aufgefallen, dasss die Methode überhaupt nicht aufgerufen wird.
 

arietistv

Mitglied
Endlich gehts!
Vielen dank.
hier der funktionierende Quelltext:
Code:
package me.arietistv.files;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

@SuppressWarnings("serial")
public class run_me extends JFrame implements ActionListener {

    private JButton browse,ok;
  
    boolean show = false,deny = false;
  
    Account acc = new Account();
    Icon img = new ImageIcon((getClass().getResource("TextFile.png")));
    Icon img2 = new ImageIcon((getClass().getResource("ERROR.png")));
  
    public void ini() throws IOException{
      
        acc.loadUser(JOptionPane.showInputDialog("","Ihr Nutzername:"));
        if(acc.login(JOptionPane.showInputDialog("","Ihr Passwort:"))){
            System.out.println("Logged in successfull");
        }else{
            acc.loadUser(JOptionPane.showInputDialog("Unbekannte User/Passwort Kombination","Ihr Nutzername:"));
            if(acc.login(JOptionPane.showInputDialog("Unbekannte User/Passwort Kombination","Ihr Passwort:"))){
                System.out.println("Logged in successfull");
            }else{
                acc.loadUser(JOptionPane.showInputDialog("Unbekannte User/Passwort Kombination","Ihr Nutzername:"));
                if(acc.login(JOptionPane.showInputDialog("Unbekannte User/Passwort Kombination","Ihr Passwort:"))){
                    System.out.println("Logged in successfull");
                }else{
                    JOptionPane.showMessageDialog(null, "3 mal unbekannte User/Passwort Kombination!\nbeende......");
                    System.exit(0);
                }
            }
        }
        //acc.loadUser("9b");
        browse();
    }
  
    private void browse(){
      
        ok = new JButton("OK");
        browse = new JButton("Öffnen");
      
        ok.setBounds(0, 0, 0, 0);
        browse.setBounds(10, 0, 80, 30);
      
        ok.addActionListener(this);
        browse.addActionListener(this);
      
        ok.setBackground(Color.ORANGE);
        browse.setBackground(Color.orange);
      
        JButton leer = new JButton();
        setVisible(false);
  
        setSize(800, 600);
        //f.setResizable(false);
        setLayout(null);
        setVisible(true);
      
        add(ok);
        add(browse);
      
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==browse){
            String s = JOptionPane.showInputDialog("", "File (z.B. Latein)");
            if(acc.hasPerm(s)){
                //TODO
            }else{
                deny = true;
                browse.setVisible(false);
                ok.setBounds(10, 0, 80, 30);
                repaint();
            }
        }
        if(e.getSource()==ok){
            browse();
            deny = false;
            show = false;
        }
    }
  
    public void paint(Graphics g){

        Graphics2D f2 =(Graphics2D)g;
      
        System.out.println(deny);
      
        f2.drawString("dwa", 200, 50);
        if(!show){
            ImageIcon img = new ImageIcon((getClass().getResource("ButtonOpen.png")));
            Image i = img.getImage();
            f2.drawImage(i, 13, 25, null);
        }
        if(deny){
            f2.drawString("Zugiff vewweigert (//001 - NOPERM)", 100, 100);
        }
    }
  
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
D JUNG Repaint function does not work AWT, Swing, JavaFX & SWT 2
E repaint Probleme AWT, Swing, JavaFX & SWT 13
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
L Swing repaint() ruft paintComponent(g1d) nicht auf AWT, Swing, JavaFX & SWT 12
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
I Swing Verhindern, dass repaint() kaskadiert AWT, Swing, JavaFX & SWT 6
ms_cikar Update swingUtilities Repaint in der Schleife AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
K Methode repaint() AWT, Swing, JavaFX & SWT 1
B Swing Wann brauche ich repaint() ? AWT, Swing, JavaFX & SWT 1
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
J Swing ungewünschter Nebeneffekt bei der repaint() Methode AWT, Swing, JavaFX & SWT 3
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
S 2D-Grafik repaint()-Aufruf. Und nichts geschieht. AWT, Swing, JavaFX & SWT 5
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
P JPanel und Repaint AWT, Swing, JavaFX & SWT 5
J JavaFX Automatisches Neuzeichnen ("Repaint") abstellen. AWT, Swing, JavaFX & SWT 10
F JTable Repaint Issue AWT, Swing, JavaFX & SWT 1
N Observer: update ruft nicht repaint auf AWT, Swing, JavaFX & SWT 0
C Repaint() funktioniert nicht in TabbedPanel AWT, Swing, JavaFX & SWT 5
S JList repaint AWT, Swing, JavaFX & SWT 1
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
M Repaint mittels Button richtig aufrufen klappt nicht AWT, Swing, JavaFX & SWT 1
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
K 2D-Grafik Paint - Wie binde ich repaint ein? AWT, Swing, JavaFX & SWT 8
D repaint() klappt anders als vorgestellt AWT, Swing, JavaFX & SWT 15
R Repaint() in Schleifen, Threads AWT, Swing, JavaFX & SWT 13
B Swing Repaint Problem - mal wieder AWT, Swing, JavaFX & SWT 5
P 2D-Grafik Gezielter Repaint einzelner Frames in Java-Game AWT, Swing, JavaFX & SWT 6
javampir Bei repaint nix los AWT, Swing, JavaFX & SWT 2
B Swing repaint() AWT, Swing, JavaFX & SWT 3
Ernesto95 AnimationLoop - Problem bei Aufruf von repaint AWT, Swing, JavaFX & SWT 6
P 2D-Grafik repaint(); steigender RAM Verbauch AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
S Applet Repaint AWT, Swing, JavaFX & SWT 3
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
R Swing Grafikfehler bei repaint AWT, Swing, JavaFX & SWT 2
N repaint() blockieren AWT, Swing, JavaFX & SWT 6
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
M Repaint() AWT, Swing, JavaFX & SWT 14
J Swing repaint, repaint, repaint AWT, Swing, JavaFX & SWT 8
M Applet repaint() verlangsamen AWT, Swing, JavaFX & SWT 7
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
V Applet JApplet Flackern durch Repaint AWT, Swing, JavaFX & SWT 11
kodela Problem mit repaint() AWT, Swing, JavaFX & SWT 3
N Swing Funktion repaint() updated nicht AWT, Swing, JavaFX & SWT 5
F repaint reagiert nicht AWT, Swing, JavaFX & SWT 8
S AWT Probleme mit repaint() AWT, Swing, JavaFX & SWT 2
D Repaint()? Oder was??? AWT, Swing, JavaFX & SWT 5
M Eine nicht korrekte Darstellung bei repaint() warum? AWT, Swing, JavaFX & SWT 4
T 2D-Grafik Kreis "von Hand" zeichnen -> jedesmal repaint()? AWT, Swing, JavaFX & SWT 6
R validate(), repaint funktionieren nicht! AWT, Swing, JavaFX & SWT 7
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
B Swing verschachteltes GUI: repaint() ändert mehr als nur gewünschte Component AWT, Swing, JavaFX & SWT 4
S validate(), invalidate(), repaint(),... Was kommt wann? AWT, Swing, JavaFX & SWT 5
M 2D-Grafik repaint() löscht altes Bild nicht AWT, Swing, JavaFX & SWT 2
J repaint() nicht richtig? AWT, Swing, JavaFX & SWT 6
R repaint erzwingen AWT, Swing, JavaFX & SWT 3
Zettelkasten repaint() von anderen Klassen aufrufen AWT, Swing, JavaFX & SWT 4
H repaint()-Problem - 50% CPU-Auslastung AWT, Swing, JavaFX & SWT 4
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
N Swing MainWindow(JFrame) aktualisieren(neuzeichnen) repaint AWT, Swing, JavaFX & SWT 4
T repaint() Problem AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Repaint - Alternative? AWT, Swing, JavaFX & SWT 3
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
N Swing repaint() funktioniert nicht AWT, Swing, JavaFX & SWT 5
T Swing repaint funktioniert nur manchmal? AWT, Swing, JavaFX & SWT 6
K Jpanel repaint problem (Fullscreen) AWT, Swing, JavaFX & SWT 5
V Swing Bei repaint() tut sich nichts AWT, Swing, JavaFX & SWT 7
G ColorReader, bei Fadenkreuz zeichnen mit repaint() flackern AWT, Swing, JavaFX & SWT 19
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
D Swing Actionlistener verhindert repaint?! AWT, Swing, JavaFX & SWT 2
S JLabel repaint AWT, Swing, JavaFX & SWT 8
C Swing Linux mag mein Swing-repaint() nicht... AWT, Swing, JavaFX & SWT 7
J Swing paintComponent() - repaint() - BufferedImage anzeigen AWT, Swing, JavaFX & SWT 5
Luk10 repaint() auch in anderen Klassen! AWT, Swing, JavaFX & SWT 6
A repaint() zu langsam, bitte um alternativen AWT, Swing, JavaFX & SWT 5
T Überlappende Transparenz und repaint() AWT, Swing, JavaFX & SWT 10
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
O Girdbag Formatierung nach repaint verloren AWT, Swing, JavaFX & SWT 2
E Swing - repaint() AWT, Swing, JavaFX & SWT 6
T Image wird nicht angezeigt?! - MediaTracker/repaint AWT, Swing, JavaFX & SWT 9
E AWT Problem mit Repaint (in Loop oder Timer) AWT, Swing, JavaFX & SWT 3
O Exception bei repaint AWT, Swing, JavaFX & SWT 3
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
Dit_ Zeilenmarkierung verschwindet nach repaint() AWT, Swing, JavaFX & SWT 12
A Swing Infinite repaint loop unterbrechen AWT, Swing, JavaFX & SWT 7
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
F "Verrutschen" von Komponenten bei repaint() AWT, Swing, JavaFX & SWT 9
Junker Fensterinhalt vor ausführen von repaint komplett löschen. AWT, Swing, JavaFX & SWT 2
T Fenster wird trotz repaint() und revalidate() nicht sofort neu gezeichnet AWT, Swing, JavaFX & SWT 6
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
J Swing Verständnis-Problem repaint(int x,int y,int width,int height) AWT, Swing, JavaFX & SWT 3
C Frame repaint hat keine Wirkung AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben