ComponentListener funzt nicht

Status
Nicht offen für weitere Antworten.
S

schubero

Gast
Hallo

hier ist mein Code:

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FileInfo extends JFrame implements ActionListener, ComponentListener
{

    
    
    private static final String BEENDEN ="beenden";
    
    public FileInfo()
    {
        
        
        
        //JPanel für Buttons 
        JPanel pb = new JPanel();
        
        //JPanel für GridLayout
      
        
        //JButtons (Öffnen Vordergrund Hintergrund)
        JButton dö = new JButton("Datei öffnen");
        JButton vg = new JButton("Vordergrund");
        JButton hg = new JButton("Hintergrund");
        //JButton Beenden
        JButton bee = new JButton("Beenden"); 
        bee.addActionListener(this);
        bee.setActionCommand(BEENDEN);
        
       
        
        
        pb.add(dö);
        pb.add(vg);
        pb.add(hg);
        
        //Schrift setzen
        Font font1 = new Font("", Font.BOLD + Font.ITALIC, 11);
        Font font2 = new Font("", Font.ITALIC, 11);
        
        //Variablen für Mittelteil
         String name;
         String verzeichnis;
         String groesse;
         String änderungdatum;
         String lesedatei;
         String versteckt;
        
        
        //JLabel für Text Mittelteil
        
        JLabel lbldatname = new JLabel("dateiname.txt");
        lbldatname.setFont(font1);
        JLabel lblverzeichnis = new JLabel();
        JLabel lblgroesse = new JLabel();
        JLabel lblädat = new JLabel();
        JLabel lbllesedat = new JLabel();
        JLabel lblversteckt = new JLabel();
        
        
        
        //JPanel für GridLayout
        
        JPanel gl = new JPanel();
        gl.setLayout(new GridLayout(6,2));
        gl.add(new JLabel("Dateiname:"));
        gl.add(lbldatname);
        gl.add(new JLabel("Verzeichnis:"));
        gl.add(new JLabel(":"));
        gl.add(new JLabel("Dateigröße:"));
        gl.add(new JLabel(":"));
        gl.add(new JLabel("Änderungsdatum:"));
        gl.add(new JLabel(":"));
        gl.add(new JLabel("Nur-Lese-Datei:"));
        gl.add(new JLabel(":"));
        gl.add(new JLabel("Versteckte Datei:"));
        gl.add(new JLabel(":"));
        
        
        
        
        JFrame fenster = new JFrame("Datei-Info");
        fenster.setDefaultCloseOperation(EXIT_ON_CLOSE);
        fenster.setSize(400,250);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        fenster.setLocation((int) (d.getWidth()- fenster.getSize().width)/2,
                			(int) (d.getHeight()-fenster.getSize().height)/2);
        
        fenster.addComponentListener(this);
        
        //Button Panel an Fenster hängen
        fenster.add(pb, BorderLayout.NORTH);
        //Mittelteil an Fenster
        fenster.add(gl, BorderLayout.CENTER);
        //Beenden Button an Fenster
        fenster.add(bee, BorderLayout.SOUTH);
        //Fenster sichtbar machen
        fenster.setVisible(true);
        
        
        
    }
    
    public void componentHidden(ComponentEvent e){}
    public void componentMoved(ComponentEvent e){}
    public void componentShown(ComponentEvent e){}
    public void componentResized(ComponentEvent e)
    {
        int width = getWidth();
        int height = getHeight();
        if (width<400) width=400;
        if (width>800) width =800;
        if(height<150) height = 150;
        if (height > 400) height = 400;        
        setSize(width, height);
    }  
    
    public void actionPerformed(ActionEvent e)
    {
        if(e.getActionCommand().equals(BEENDEN))
        {
            System.exit(0);
        }
    }
    
    
    public static void main(String[] args)
    {
        FileInfo info = new FileInfo();
    }
}

Ich möchte die Fenstergröße überwachen.
Ich habe an das Fenster den ComponentListener hingehängt und der scheint auch zu laufen.
Mein Problem ist, dass

Code:
public void componentResized(ComponentEvent e)
    {
        int width = getWidth();
        int height = getHeight();
        if (width<400) width=400;
        if (width>800) width =800;
        if(height<150) height = 150;
        if (height > 400) height = 400;        
        setSize(width, height);
    }

die Größe nicht an fenster zurückgibt.

Kann mir jemand helfen?

Dank im voraus!
 

Semerzo

Aktives Mitglied
Hm, also bei mir funktioniert nicht nur die Größe nicht, sondern der gesamte Code:
Code:
java.lang.Error: Do not use javax.swing.JFrame.add() use javax.swing.JFrame.getContentPane().add() instead
	at javax.swing.JFrame.createRootPaneException(JFrame.java:465)
	at javax.swing.JFrame.addImpl(JFrame.java:491)
	at java.awt.Container.add(Container.java:518)
	at coding.SwingStarter.<init>(SwingStarter.java:96)
	at coding.SwingStarter.main(SwingStarter.java:133)
Exception in thread "main"

Dein Problem lag darin, dass du dir innerhalb deines Frames, noch einen Frame angelegt hast, siehe Zeile 84, welchen du dann anstelle deiner Klasse FileInfo anzeigst. Die Methoden des Listeners greifen dann aber auf die Methoden #setSize deiner Klasse zu, nicht auf die des Frames fenster.

Die Methoden getWidth und getHeight arbeiten vollkommen richtig, du hast deiner Klasse FileInfo auch nie gesagt, dass sie sich zeigen soll. Ergo kann sie keine Größe abweichend von 0,0 haben ...

1) Streiche Zeile 84 uns benutze anstelle dieses JFrames fenster die Methoden deiner eigenen Klasse.

2) Mache aus dem JFrame fenster ein Feld der Klasse und benutze seine Methoden innerhab des Listeners. Dann würde ich mit FileInfo wohl auch JFrame nicht mehr erweitern, weil du das dann gar nicht mehr brauchst.

3) Füge Spasseshalber mal
Code:
setVisible(true);
als letzte Anweisung in deinem Konstruktor ein. Dann siehst du, dass du 2 Frames gemacht hast ...

Edit:
Warum nimmst du nicht
Code:
setResizable(false);
innerhalb deines Frames? Das was du vorhast, hat den unschönen Effekt, dass der Frame zuerst in der ungewünschten Größe gezeichnet wird. Anschließend wird das Event gefeuert, du stellst fest: Er ist zu groß/klein und änderst ihn wieder. Weil er geändert wird, wird erneut ein Event gefeuert.

Unschön ist dabei, dass der Frame auf jedenfall 2 mal gezeichnet wird, was man sehen kann, es flackert, und dass du das Event nochmal auslöst ...
 

schubero

Mitglied
PS: Das es unschön ist ist mir klar, aber das war eine Übung von der Uni und der Frame sollte in einem bestimmten
Bereich bleiben.Der Bereich war wichtig!wenn ich Resize... auf false setze bleibt er statisch.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W JComponent - ComponentListener - resized / moved AWT, Swing, JavaFX & SWT 5
V Swing Neue Größe bei ComponentListener noch nicht verfügbar? AWT, Swing, JavaFX & SWT 3
B ComponentListener hört nicht zu AWT, Swing, JavaFX & SWT 6
F ComponentListener entfernen? AWT, Swing, JavaFX & SWT 14
M JTabbedPane -> setSelectedIndex funzt nicht AWT, Swing, JavaFX & SWT 3
X JScrollPane funzt net... AWT, Swing, JavaFX & SWT 5
R KeyListener funzt nicht AWT, Swing, JavaFX & SWT 2
R Swing Methode add([Component]) funzt nich AWT, Swing, JavaFX & SWT 7
A Nimbus eigener Painter funzt nicht AWT, Swing, JavaFX & SWT 11
G JTree TreeCellRenderer Panelgröße funzt net AWT, Swing, JavaFX & SWT 2
O JPanel.setEnabled(false); auf Kindelemente funzt net? AWT, Swing, JavaFX & SWT 6
G textarea.read funzt net in Jar-Datei AWT, Swing, JavaFX & SWT 7
G SWT DatePicker funzt nicht in eigener Anwendung AWT, Swing, JavaFX & SWT 5
A simples programm funzt net AWT, Swing, JavaFX & SWT 7
K Scrollbar funzt net :-/ AWT, Swing, JavaFX & SWT 4
K setResizable() funzt nich AWT, Swing, JavaFX & SWT 3
T CellRenderer funzt net AWT, Swing, JavaFX & SWT 20
J Window Listener funzt nicht richtig AWT, Swing, JavaFX & SWT 5
richis-fragen Spaltenbreite bei drag nicht änderbar AWT, Swing, JavaFX & SWT 4
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
MiMa Darstellung von FXML ateien nicht korrekt (SceneBuilder) AWT, Swing, JavaFX & SWT 2
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX PixelWriter.setColor setzt Farbe nicht AWT, Swing, JavaFX & SWT 2
M JavaFX Diagonale Linie nicht ausgegeben/angezeigt AWT, Swing, JavaFX & SWT 1
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
P thread nimmt veränderte boolean nicht AWT, Swing, JavaFX & SWT 7
P Animation läuft nicht korrekt AWT, Swing, JavaFX & SWT 8
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
G JOptionPane zeigt nicht an was ich will AWT, Swing, JavaFX & SWT 2
S JavaFX WebView zeigt bestimmte Websites nicht an AWT, Swing, JavaFX & SWT 2
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
berserkerdq2 Anchorpane warum kann ich nicht Anchors setzen AWT, Swing, JavaFX & SWT 6
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Fxml findet controller nicht AWT, Swing, JavaFX & SWT 2
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
_user_q [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
J Programm findet Resource nicht. AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
B Bild lädt nicht AWT, Swing, JavaFX & SWT 2
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
U Code doch nicht austauschbar in 2DGraphics AWT, Swing, JavaFX & SWT 2
P JavaFX Änderungen am Datenmodell visuell nicht sichtbar AWT, Swing, JavaFX & SWT 3
M JavaFX kann man da noch was am code vereinfachen design technisch sieht nicht richtig aus... AWT, Swing, JavaFX & SWT 15
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
G JavaFX Scene ausdrucken nicht möglich, Seite leer AWT, Swing, JavaFX & SWT 5
N Programm Läuft nicht auf anderen Pcs AWT, Swing, JavaFX & SWT 9
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Swing JScrollPane scrollt nicht AWT, Swing, JavaFX & SWT 10
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
S e(fx)clipse erscheint nicht im Marketplace, lässt sich nicht installieren AWT, Swing, JavaFX & SWT 16
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
Davee JavaFX JavaFX Jar ausführbar jedoch nicht alle Stages AWT, Swing, JavaFX & SWT 3
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
G Gui updated beim zweiten Aufruf nicht mehr AWT, Swing, JavaFX & SWT 15
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
DeBoiJoshua 2D-Grafik Gif Animation will nicht laden AWT, Swing, JavaFX & SWT 1
A TableView updatet sich nicht AWT, Swing, JavaFX & SWT 3
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
P Swing jxmapviewer hinzufügen/nutzen funktioniert nicht AWT, Swing, JavaFX & SWT 7
G JavaFX , Duplicate erzeugt aber ich weis nicht wo AWT, Swing, JavaFX & SWT 4
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
H maxWidth greift nicht AWT, Swing, JavaFX & SWT 15
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben