Probléme méthode paintComponent() - Java - Programmation
Marsh Posté le 18-09-2008 à 18:52:10
Salut,
Désolé j'ai pas regardé tout ton code, mais
la question c'est de savoir comment afficher des mots dans un JComponent qui est un JPanel ?
La méthode simple serait, si tu arrives à récupérer tes mots à partir de ton fichier texte, d'itérer parmi ces mots, et entrer un code du genre (chuis complètement à l'aveugle, j'ai pas d'éditeur ni rien, je t'écris ce code au feeling, à toi de corriger si ça te convient) :
Dans ton paintComponent, tu fais :
Code :
|
Ça t'affiche tous tes mots les uns sous les autres dans ton JPanel.
Sinon si tu veux les afficher en prenant en compte le retour à la ligne, faut chercher un truc comme une classe SwingUtilities (dépréciée) ou un équivalent qui s'appelle GraphicsUtilities un truc du genre.
Désolé hein, je te dis tout sans vérifier donc c'est ptet inexact, mais ça te donne une piste
++ dis-moi si ça fonctionne
Marsh Posté le 18-09-2008 à 15:20:01
Voici mon code:
public class Fenetre extends JFrame
{
private JButton bouton = new JButton("Ajouter un mot" );
private JButton bout = new JButton("Afficher la liste" );
private JLabel label = new JLabel("Titre" );
public JPanel pan = new Paneau();
public Fenetre() throws IOException
{
setTitle("Tous mes films et jeux" );
setSize(500,300);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(bouton);
c.add(bout);
bouton.addActionListener(new BoutonListener());
bout.addActionListener(new BoutListener());
pan.setBackground(Color.red);
c.add(pan);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pan.setLayout(new BorderLayout());
JPanel south = new JPanel();
south.add(bouton);
south.add(bout);
pan.add(south, BorderLayout.SOUTH);
label.setHorizontalAlignment(JLabel.CENTER);
pan.add(label, BorderLayout.NORTH);
this.setContentPane(pan);
}
class BoutonListener implements ActionListener
{
private String test;
public void actionPerformed(ActionEvent e)
{
test=JOptionPane.showInputDialog(null,"Entrez mot" );
FileWriter writer = null;
try{
writer = new FileWriter("fichier.txt", true);
writer.write(test);
writer.write("\n" );
}catch(IOException ex){
ex.printStackTrace();
}finally{
if(writer != null)
{try
{
writer.close();
}catch (IOException ex)
{
}
}
}
}
}
class BoutListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
BufferedReader LecteurBufferise = null;
String Chemin = "fichier.txt";
String ligneDonnee;
boolean eof = false;
try {
LecteurBufferise = new BufferedReader(new FileReader(Chemin));
while (eof != true) {
ligneDonnee = LecteurBufferise.readLine();
if (ligneDonnee != null )
{ if(ligneDonnee=="\n" )
{
System.out.println(ligneDonnee);
}
else
{
System.out.println("Erreur" );
}
}
else {
eof = true;
}
}
}
catch (FileNotFoundException ex) {
System.out.println("Fichier Non Trouvé !!" );
}
catch (IOException ex) {
System.out.println("Erreur lecture ligne fichier !!" );
}
finally {
try {
LecteurBufferise.close();
}
catch (IOException ex1) {
System.out.println("Erreur fermeture fichier !!" );
}
}
}
}
}
public class Paneau extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString ("", 20, 30);
}
}
Ma fenêtre contient un bouton "Ajouter un mot" , en cliquant sur ce bouton je peux ajouter un mot dans un fichier texte.
J'aimerai que le 2eme bouton "Afficher la liste" , affiche tous les mots contenu dans mon fichier texte dans la fenêtre et non pas en console....( ce que mon code fait actuellement)
Comment puis-je faire pour que la méthode paintComponent() affiche les mots contenu dans mon fichier avec g.drawString???
Il y a t-il une autre facon de procéder?
Merci