Flimmern

Status
Nicht offen für weitere Antworten.
B

blackstarmaster

Gast
wieso flimmert bei diesem Programm das draw string? wegen dem repaint? wie löst man das Problem unkompliziert?


import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Test extends Applet{

private TextField tf_a;

public void init () {
setLayout (new FlowLayout());
tf_a = new TextField("was willst du eingeben",20);
add(tf_a);
}

public String eingabe (String k){
String a = tf_a.getText();
return a;
}

public void paint( Graphics g ) {
String k="";
String w = eingabe(k);
g.drawString( "folgendes hast du eingegeben: "+w, 100, 100 );
repaint();
}
}
 

Joker

Bekanntes Mitglied
und mal drüber nachdenken ob man das ganze nicht auch eleganter lösen kann ;)

Code:
import java.awt.FlowLayout;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

public class Test extends JApplet implements CaretListener {

    private JTextField tf_a;
    private JLabel textLabel;

    @Override
    public void init() {

        setLayout(new FlowLayout());
        tf_a = new JTextField("was willst du eingeben", 20);
        textLabel = new JLabel("folgendes hast du eingegeben: ");
        tf_a.addCaretListener(this);
        add(tf_a);
        add(textLabel);
    }

    @Override
    public void caretUpdate(CaretEvent ce) {
        textLabel.setText(tf_a.getText());
    }
}
 
B

blackstarmaster

Gast
ok aba wos muss ich tun, wenn ich das ganz mit g.drawString machen will?
das repaunt muss ich stehen lassen, damit sich der Text erneuert!!!
 

Joker

Bekanntes Mitglied
ok aba wos muss ich tun, wenn ich das ganz mit g.drawString machen will?
das repaunt muss ich stehen lassen, damit sich der Text erneuert!!!

Klar geht das, macht aber keinen besonderen Sinn (was besonders negativ daran ist wird dir auffallen, wenn du den Text im TextField mal löschst und dann was neues reinschreibst ;)). Die von mir gepostete Art und Weise ist hier der way to go.

Code:
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

public class Test extends JApplet implements CaretListener {

    private JTextField tf_a;
   // private JLabel textLabel;

    @Override
    public void init() {
        setLayout(new FlowLayout());
        tf_a = new JTextField("was willst du eingeben", 20);
        //textLabel = new JLabel("folgendes hast du eingegeben: ");
        tf_a.addCaretListener(this);
        add(tf_a);
       // add(textLabel);
    }

    @Override
    public void paint(Graphics g) {
     g.drawString( "folgendes hast du eingegeben: "+tf_a.getText(), 100, 100 );
    }
    
    @Override
    public void caretUpdate(CaretEvent ce) {
        //textLabel.setText(tf_a.getText());
        repaint();
    }
}
 

Marco13

Top Contributor
Da muss ich jetzt aber einhaken: Quaxlis Antwort sollte NICHT implizieren, dass die paint-Methode so in Ordnung ist. (Das ist sie nämlich definitiv NICHT).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Gif Bilder flimmern Java Basics - Anfänger-Themen 10
J flimmern Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben