Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在文本窗格中多次使用Java insertIcon_Java_Icons_Jbutton_Chat_Jtextpane - Fatal编程技术网

在文本窗格中多次使用Java insertIcon

在文本窗格中多次使用Java insertIcon,java,icons,jbutton,chat,jtextpane,Java,Icons,Jbutton,Chat,Jtextpane,我正在用Java编写一个聊天程序。我为smileys制作了一个栏目。每次单击一个文本窗格时,我都会在其上打印笑脸,但当我多次单击同一个笑脸时,它只打印一次。有什么帮助吗 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SmileyTesterGUI extends JFrame { JPanel main = new JPanel(); JPanel south =

我正在用Java编写一个聊天程序。我为smileys制作了一个栏目。每次单击一个文本窗格时,我都会在其上打印笑脸,但当我多次单击同一个笑脸时,它只打印一次。有什么帮助吗

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

public class SmileyTesterGUI extends JFrame {

    JPanel main = new JPanel();
    JPanel south = new JPanel();
    JPanel messageCenter = new JPanel();
    JPanel smileysNorth = new JPanel();
    JTextField text;
    JTextPane tPane;
    Icon happy;
    Icon smile;
    Icon tongue;
    Icon veryHappy;
    Icon wink;
    Icon laugh;
    Icon sad;
    Icon verySad;
    Icon cry;
    int number = 0;
    boolean check = true;

    public SmileyTesterGUI() {
        super("Smileys");
        add(main);
        main.setLayout(new BorderLayout());
        main.add(south, BorderLayout.SOUTH);
        south.setLayout(new BorderLayout());
        south.add(messageCenter, BorderLayout.CENTER);
        south.add(smileysNorth, BorderLayout.NORTH);

        // textpane panel
        tPane = new JTextPane();
        JScrollPane sPane = new JScrollPane(tPane);
        main.add(sPane);
        tPane.setEditable(false);

        // smileysPanel
        smileysNorth.setLayout(new GridLayout(1, 0));
        JButton smiley1 = new JButton();
        JButton smiley2 = new JButton();
        JButton smiley3 = new JButton();
        JButton smiley4 = new JButton();
        JButton smiley5 = new JButton();
        JButton smiley6 = new JButton();
        JButton smiley7 = new JButton();
        JButton smiley8 = new JButton();
        JButton smiley9 = new JButton();
        smileysNorth.add(smiley1);
        smileysNorth.add(smiley2);
        smileysNorth.add(smiley3);
        smileysNorth.add(smiley4);
        smileysNorth.add(smiley5);
        smileysNorth.add(smiley6);
        smileysNorth.add(smiley7);
        smileysNorth.add(smiley8);
        smileysNorth.add(smiley9);

        // set smileys(icon) to each button - pathed from personal directory
        happy = new ImageIcon(getClass().getResource("smileys/Smile1.png"));
        smiley1.setIcon(happy);
        smile = new ImageIcon(getClass().getResource("smileys/Smile2.png"));
        smiley2.setIcon(smile);
        tongue = new ImageIcon(getClass().getResource("smileys/Smile3.png"));
        smiley3.setIcon(tongue);
        veryHappy = new ImageIcon(getClass().getResource("smileys/Smile4.png"));
        smiley4.setIcon(veryHappy);
        wink = new ImageIcon(getClass().getResource("smileys/Smile5.png"));
        smiley5.setIcon(wink);
        laugh = new ImageIcon(getClass().getResource("smileys/Smile6.png"));
        smiley6.setIcon(laugh);
        sad = new ImageIcon(getClass().getResource("smileys/Smile7.png"));
        smiley7.setIcon(sad);
        verySad = new ImageIcon(getClass().getResource("smileys/Smile8.png"));
        smiley8.setIcon(verySad);
        cry = new ImageIcon(getClass().getResource("smileys/Smile9.png"));
        smiley9.setIcon(cry);

        // smileys print on the textpane

        smiley1.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                tPane.insertIcon(happy);
            }
        });
        smiley2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                tPane.insertIcon(smile);
            }
        });
        smiley3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                tPane.insertIcon(tongue);
            }
        });
        smiley4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                tPane.insertIcon(veryHappy);
            }
        });
        smiley5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                tPane.insertIcon(wink);
            }
        });
        smiley6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                tPane.insertIcon(laugh);
            }
        });
        smiley7.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                tPane.insertIcon(sad);
            }
        });
        smiley8.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                tPane.insertIcon(verySad);
            }
        });
        smiley9.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                tPane.insertIcon(cry);
            }
        });

        // messagePanel
        messageCenter.setLayout(new BorderLayout());
        text = new JTextField();
        JButton send = new JButton("Send");
        messageCenter.add(text);
        messageCenter.add(send, BorderLayout.EAST);

        text.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                sendMessage();
            }
        });

        send.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                sendMessage();
            }
        });

        setLocation(500, 0);
        setSize(600, 250);
    }

    public void sendMessage() {
        String a = text.getText();
        //
        // if(a){
        // tPane.setText(a);
        // tPane.getText();
        // }

        if (a.contains(":D")) {
            tPane.insertIcon(veryHappy);

        } else if (a.contains(":)")) {
            tPane.insertIcon(happy);
        } else if (a.contains(":(")) {
            tPane.insertIcon(sad);
        }

//      text.setText(null);
//      text.requestFocus();

    }

    public static void main(String[] args) {
        new SmileyTesterGUI().setVisible(true);

    }

}

这是因为不能将相同的
ImageIcon
多次添加到
JTextPane
。 您可以在
ActionListener
中动态创建
ImageIcon
,每次单击
smiley
时创建一个新的
ImageIcon

   smiley2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            tPane.insertIcon(new ImageIcon(getClass().getResource("smileys/Smile2.png")));
        }
    });

这是因为不能将相同的
ImageIcon
多次添加到
JTextPane