A voir également:
- Probleme d'affichage en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Affichage double ecran - Guide
1 réponse
Utilisateur anonyme
25 juil. 2003 à 09:01
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
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