Swing-Applet: Panelinhalt ändern

Status
Nicht offen für weitere Antworten.
R

ronbigb

Gast
Hallo!

Ich sitze arg in der Klemme und wäre für jeden Hint sehr dankbar. Also: Vielen Dank schon mal im voraus für Eure Bemühungen.

Es geht um folgendes: Ich arbeite an einem Applet, welches EKGs darstellt. Diese bzw. die einzelnen Zeiten können dann vermessen werden. Das funktioniert auch einwandfrei:

Code:
public class Test05 extends JApplet {
...
public Component createComponents() {
...
        ImageIcon image = new ImageIcon("ekg.jpg");
        Measurement measurement = new Measurement(image, this);
        pane.add(measurement);
        return pane;
}
private void createGUI() {	  				
        getContentPane().add(createComponents());                     
}	
public void init() {						
    	try {...  createGUI(); 	}
    	catch (Exception e) { ... }
}  

public class Measurement extends JLabel { 
...
Test05 controller;
public Measurement(ImageIcon image, Test05 controller) {
         super(image);
         this.controller = controller;     
...
}
// An dieser Stelle kommt eine MouseListener-Subklasse, die auf die Mauseingabe zur Vermessung reagiert
protected void paintComponent(Graphics g) {
         super.paintComponent(g); 
         // Hier folgen alle drawLine-Anweisungen, um die "Messlate" zu zeichnen
         g.drawLine(x1,y,x2,y);
         ...
}
}
Ich hoffe, das war einigermassen verständlich (geht ja nur um's Prinzip). Aber - wie gesagt - das funktioniert im Prinzip alles einwandfrei.

Das Problem kommt jetzt: Nun soll der User zusätzlich in das EKG zoomen können und in diesem Teil soll natürlich wieder vermessen werden. Dazu müsste ich aber das dargestellte ImageIcon ändern können und das krieg ich schlichtweg nicht hin. Auch wenn ich Anweisungen wie pane.remove(measurement); einfüge, um danach z.B. eine zweite Instanz von Measurement mit anderem image zu erstellen und diese wieder einzufügen mit add(), klappt das einfach nicht.

Auch funktioniert pane.removeAll() und ähnliches nicht, irgendwie liegt der Hund wohl in paintComponent begraben (?).

Initial habe ich versucht, irgendwie die image-Variable "dynamisch" zu halten, aber soviel ich unterdessen begriffen habe, kann ich den Inhalt einer Variable, die ich an die Subklasse weitergebe ja danach nicht einfach wieder ändern.

Ihr werdet es bemerkt haben: Mein Wissen reicht nicht aus und die Suche im Netz hat sich als extrem frustran herausgestellt. Ich bitte Euch daher um jeden Hinweis, der eventuell weiterhilft. Merci!
 

L-ectron-X

Gesperrter Benutzer
Auch wenn ich Anweisungen wie pane.remove(measurement); einfüge, um danach z.B. eine zweite Instanz von Measurement mit anderem image zu erstellen und diese wieder einzufügen mit add(), klappt das einfach nicht.
Was klappt da nicht? Wird das Bild nicht angezeigt?
Um neu eingefügte Komponenten zur Laufzeit zu zeichnen, musst du ein Neuzeichnen anfordern, im Prinzip also die Oberfläche "bereinigen".
Nach dem Hinzufügen von Komponenten sollte also noch
Code:
validate();
an dem Container aufgerufen werden, dem die Component's hinzugefügt wurden.
 
R

ronbigb

Gast
Hi! Und vielen Dank für den Input.

Vielleicht stell ich mich auch einfach doof an (was ich nicht hoffe ;). Gut, validate() habe ich versucht, hat nicht geklappt. Ich hab nun wieder ca. 2h gelesen und geforscht, finde aber den Fehler nicht.

Ich habe hier mal ein im Prinzip analoges Beispiel als Kurzfassung. Es wird mir schliesslich immer nur das letzte mit add() hinzugefügte Panel dargestellt. Das erste Panel mit der ersten Grafik erscheint schlicht nie!

Code:
public class Basics01 extends JApplet {
  public void init() {

    Image image1 = getImage( getCodeBase(), "ekg.jpg" );
    Image image2 = getImage( getCodeBase(), "ekg2.jpg" );

    MyPanel panel1 = new MyPanel(image1);
    MyPanel panel2 = new MyPanel(image2);
    getContentPane().add(panel1);   
    int summe =0;
    for (int i= 0; i <= 200000000; i++)
    {      
    	summe++;
    }
    getContentPane().remove(panel1);    
    getContentPane().add(panel2);
    getContentPane().validate();
  }
}

class MyPanel extends JPanel{
  Image img;

  MyPanel(Image img){
    this.img = img;
  }

  public void paintComponent( Graphics g ) {
    super.paintComponent(g);
    g.drawImage( img, 0, 0, this );
  }
}
Ich hoffe, meine "Warteschleife" diskreditiert mich nicht zu arg ;)...

Wäre für jegliche Hilfe extrem dankbar!
Gruss Ron
 

André Uhres

Top Contributor
ronbigb hat gesagt.:
..Es wird mir schliesslich immer nur das letzte mit add() hinzugefügte Panel dargestellt.
Das erste Panel mit der ersten Grafik erscheint schlicht nie!
Das Problem lässt sich lösen indem man einen neuen Thread startet.
Etwa so:
Code:
//package applets;
/*
 * Basics01.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Basics01 extends JApplet implements ActionListener{
    public void init() {
        image1 = getImage( getCodeBase(), "img2.gif" );//sex
        image2 = getImage( getCodeBase(), "img1.gif" );//B
        panel1 = new MyPanel(image1);
        getContentPane().add(panel1);

//eine Möglichkeit:
        timer = new Timer(2000, this);//alle 2 Sekunden actionPerformed() aufrufen
        timer.start();

//eine andere Möglichkeit:
//        new Thread(new Runnable(){
//            public void run() {
//                try{Thread.sleep(2000);}catch(InterruptedException ex){}
//                paintBild(image2);
//            }
//        }).start();

    }
    public void actionPerformed(ActionEvent e) {
        timer.stop();//ohne stop() erfolgt ein dauernder Bildwechsel
        bild2 = !bild2;
        paintBild(bild2?image2:image1);
    }
    private void paintBild(Image image){
        panel1.img = image;
        panel1.repaint();
    }
    private MyPanel panel1;
    private Image image1, image2;
    private javax.swing.Timer timer;
    private boolean bild2;
}
class MyPanel extends JPanel{
    Image img;
     MyPanel(Image img){
        this.img = img;
    }
     public void paintComponent( Graphics g ) {
        super.paintComponent(g);
        g.drawImage( img, 0, 0, this );
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Applet und Swing Anwendung AWT, Swing, JavaFX & SWT 2
P Swing Applet AWT, Swing, JavaFX & SWT 2
F warteschleife in swing applet AWT, Swing, JavaFX & SWT 12
W Problem mit Swing-Applet AWT, Swing, JavaFX & SWT 2
L swing und java applet.keine Konflikt ,oder? AWT, Swing, JavaFX & SWT 3
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
K eigener button in swing AWT, Swing, JavaFX & SWT 3
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
windl Bufferstrategy in Swing nachstellen AWT, Swing, JavaFX & SWT 0
M Kamera in Java Swing einbinden AWT, Swing, JavaFX & SWT 4
Z Swing Swing und die Progressbar AWT, Swing, JavaFX & SWT 1
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
RalleYTN Swing JavaFX VideoPlayer in Swing einbetten. Ich komm nicht an die Dimension des Videos! AWT, Swing, JavaFX & SWT 0
T swing läuft nur beding flüssig AWT, Swing, JavaFX & SWT 1
A Sonderzeichen bei Swing AWT, Swing, JavaFX & SWT 3
L DoubleBuffering unter Swing AWT, Swing, JavaFX & SWT 0
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
N JavaFX Umstieg von Swing auf Java FX AWT, Swing, JavaFX & SWT 6
J GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Plugin oder eigenes Tool mit zB SWING AWT, Swing, JavaFX & SWT 2
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben