Essayez de mettre à jour ma JFrame, pourquoi ne pas repeindre travail?
Je vais exécuter le programme, mais quand je l'ai activer l'événement, la JFrame ne mettra pas à jour (il ne supprime que les JLabel ) à moins de me déplacer manuellement la fenêtre de la redimensionner, même avec repaint() appelé après que l'événement ait lieu. Quel est le problème?
public Driver() {
setLayout( new FlowLayout() );
pass = new JPasswordField( 4 );
add( pass );
image = new ImageIcon( "closedD.png" );
label = new JLabel( "Enter the password to enter the journal of dreams" , image , JLabel.LEFT );
add( label );
button = new JButton( "Enter" );
add( button );
event e = new event();
button.addActionListener( e );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setVisible( true );
setSize( 1600/2 , 900/2 );
setTitle( "Diary" );
}
//main method
//
//
public static void main( String[] args ) {
win = new Driver();
}
public class event implements ActionListener {
private boolean clickAgain = false;
public void actionPerformed( ActionEvent e ) {
if ( passEquals( password ) && clickAgain == false ) {
image2 = new ImageIcon( "openD.png" );
remove( label );
label = new JLabel( "Good Job! Here is the journal of dreams." , image2 , JLabel.LEFT );
add( label );
clickAgain = true;
}
repaint();
}
}
Vous devez vous connecter pour publier un commentaire.
Tout moment d'ajouter ou supprimer un composant, vous devez dire à son conteneur re-mise en page de l'actuel composants qu'il contient. Vous faites cela en appelant
revalidate()
sur elle. Vous pouvez alors appelerrepaint()
après le revalider appel pour que le conteneur repeindre.Remarque: votre question est formulée de façon à ce que si vous supposez que nous savons que vous essayez de faire. Merci de nous donner plus d'informations pour la prochaine fois. Le meilleur et le plus instructif sur la question, le meilleur et le plus instructif la réponse.
Edit 2:
Je me demande si vous pourriez simplifier votre code un peu. Au lieu de la suppression et l'ajout d'un JLabel, mieux il vous suffit de définir le courant JLabel du texte et l'Icône: