Probleme d'affichage en java

Fermé
Bernard - 15 juil. 2003 à 20:08
 Utilisateur anonyme - 25 juil. 2003 à 09:01
Bonjour,
Quelqu'un sait comment afficher une icone dans un JTextArea ou Pane ? C'est pour un chat, quand on poste un nouveau message, il faut que l'icone(smiley) reste quand le texte monte. Merci.
A voir également:

1 réponse

Utilisateur anonyme
25 juil. 2003 à 09:01
Salut Bernard!

Jem suis penché sur ton problème et je suis arrivé à la solution ci-dessous.

J'ai créé 3 classes:
- JIconableTextArea qui permet de dessiner des ImageIcon sur un TextArea
- ChatMessage qui est une structure de données permettant de stocker une icône, un nickname et un message
- Tester qui est juste une classe éténdant JFrame qui permet de tester l'application

Tu trouveras le code des ces classes ci-dessous.
A toi de l'adapter afin que cela réponde exactement à ce que tu attends.



package temp;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

/**
*
*@author HackTrack
*@created July 24, 2003
*@version 1.0
*/

public class JIconableTextArea extends JTextArea {
private ArrayList chatData;


public JIconableTextArea() {
super();
initialize();
}


public JIconableTextArea(int rows, int cols) {
super(rows, cols);
initialize();
}


public void addMessage(ChatMessage chatMessage) {
chatData.add(chatMessage);
}


public void paint(Graphics g) {
g.clearRect(0, 0, this.getWidth(), this.getHeight());
Iterator it = chatData.iterator();
ImageIcon icon;
String nickname;
String message;
for(int i = 0; i < chatData.size(); i++) {
ChatMessage chatMessage = (ChatMessage)chatData.get(i);
icon = chatMessage.getIcon();
nickname = chatMessage.getNickname();
message = chatMessage.getMessage();
int w = icon.getIconWidth();
int h = icon.getIconHeight();
icon.paintIcon(this, g, 0, h * i);
g.drawString(nickname + " dit: " + message, w + 10, h * i + h / 2 + getFont().getSize() / 2);
}
}


private void initialize() {
chatData = new ArrayList();
chatData.add(new ChatMessage(new ImageIcon("D:/test.jpg"), "Jean", "Salut! Comment vas-tu?"));
chatData.add(new ChatMessage(new ImageIcon("D:/test2.jpg"), "Anne", "Bien merci et toi?"));
chatData.add(new ChatMessage(new ImageIcon("D:/test.jpg"), "Jean", "Un peu fatigué!"));
}
}





package temp;
import javax.swing.ImageIcon;
/**
*
*@author HackTrack
*@created July 24, 2003
*@version 1.0
*/

public class ChatMessage {
private ImageIcon icon;
private String nickname;
private String message;


public ChatMessage(ImageIcon icon, String nickname, String message) {
this.icon = icon;
this.nickname = nickname;
this.message = message;
}


public ImageIcon getIcon() {
return icon;
}


public String getNickname() {
return nickname;
}


public String getMessage() {
return message;
}
}




package temp;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
*
*@author HackTrack
*@created July 22, 2003
*@version 1.0
*/

public class Tester extends JFrame {
private Container c;
private JIconableTextArea textarea;


public Tester() {
initialize();
}


private void initialize() {
c = getContentPane();
textarea = new JIconableTextArea(15, 20);
JScrollPane jsp = new JScrollPane(textarea);
jsp.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
textarea.repaint();
}
});
c.add(jsp);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}


public static void main(String[] args) {
Tester tester = new Tester();
}
}


;-)
HackTrack