`
pengyu
  • 浏览: 29536 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

swing 如何实现图片和文字一起显示(如qq)

阅读更多
import java.awt.Container;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.StyleConstants;

public class JTextPane2 extends JFrame{
    private JTextPane mypane;
    private JTextPane pane;
    private JScrollPane scrollMypane;
    private JScrollPane scrollPane;

    public JTextPane2() {
        super("JTextPane Test");
         Container container = getContentPane();
         container.setLayout(null);
         pane = new JTextPane();
         pane.setEditable(false);
         scrollPane = new JScrollPane(pane);
         scrollPane.setBounds(new Rectangle(0,10,400,200));
         JButton insertButton = new JButton("插入圖片");
         insertButton.setBounds(new Rectangle(0,220,100,40));

         insertButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                 JFileChooser chooser = new JFileChooser();
                 chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
                 chooser.showOpenDialog(JTextPane2.this);
                 mypane.insertIcon(new ImageIcon(chooser.getSelectedFile().toString()));
             }
         });

         mypane = new JTextPane();
         scrollMypane = new JScrollPane(mypane);
         scrollMypane.setBounds(new Rectangle(0,270,400,200));

         JButton sendButton = new JButton("發送");
         sendButton.setBounds(new Rectangle(170,500,60,40));
         sendButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                 Vector picVector = new Vector();
                for(int i = 0; i < mypane.getStyledDocument().getRootElements()[0].getElement(0).getElementCount(); i++){
                     Icon icon = StyleConstants.getIcon(mypane.getStyledDocument().getRootElements()[0].getElement(0).getElement(i).getAttributes());
                    if(icon != null){
                         picVector.add(icon.toString());
                     }
                 }
                 System.err.println("發送 JTextPane 的內容是 :\n"+mypane.getText());
                int k = 0;
                for(int i = 0; i < mypane.getText().length(); i++){
                    if(mypane.getStyledDocument().getCharacterElement(i).getName().equals("icon")){
                         System.err.println("你在第 " + i + " 行插入了圖片,圖片的路徑是 :");
                         pane.insertIcon(new ImageIcon(picVector.get(k).toString()));
                         System.err.println(picVector.get(k++).toString());
                     }else{
                        try {
                             pane.getStyledDocument().insertString(pane.getText().length(), mypane.getStyledDocument().getText(i,1), null);
                         } catch (BadLocationException e1) {
                             e1.printStackTrace();
                         }
                     }
                 }
                 picVector.clear();
             }
         });
         container.add(scrollPane);
         container.add(insertButton);
         container.add(scrollMypane);
         container.add(sendButton);
         setSize(400,600);
         setVisible(true);

     }

    public static void main(String[] args) {
        new JTextPane2().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }

}
分享到:
评论

相关推荐

    基于Swing技术实现“HoneyViewer”图片查看器

    HoneyViewer图片查看器是一个基于java Swing实现的图片查看器,主要实现了图片展示功能。 本实验手册根据需求完成图片读取、切换等功能,平台的全称为:基于java Swing实现的HoneyViewer图片查看器(后简称为: Keep-...

    JavaSwing实现的QQ

    【Java Swing实现的QQ】是一个基于Java图形用户界面(GUI)库Swing开发的应用程序,它旨在模拟并实现QQ的基本功能。Swing是Java Standard Edition(Java SE)的一部分,提供了丰富的组件库,用于构建桌面应用程序。...

    用swing实现的QQ界面

    图标和图片的显示则可以通过 ImageIcon 类完成。为了实现更加美观的界面,还可以使用JLayeredPane和AlphaComposite来实现透明效果,或者使用自定义的Paint方法绘制复杂图形。 在实现过程中,还需要考虑到线程安全...

    java Swing实现的仿qq

    在"java Swing实现的仿qq"项目中,我们将会探讨如何使用Swing来构建一个类似于腾讯QQ的客户端应用。 首先,我们需要理解Swing中的基本组件和布局管理器。例如,JFrame是窗口的基础,JLabel用于显示文本或图标,...

    java swing程序 实现点击图片列表 改变图片

    以上就是关于"java swing程序实现点击图片列表改变图片"的核心知识讲解,通过理解和应用这些知识点,开发者可以创建出动态且互动性强的图形用户界面。在实际开发中,应根据项目需求进行适当的调整和扩展。

    Java Swing实现添加数据并查询数据显示

    在Swing界面设计方面,你需要创建JFrame作为主窗口,然后添加各种组件,如JButton(用于触发添加和查询操作)、JTextField(用户输入数据)和JTable(显示查询结果)。使用ActionListener监听按钮事件,当用户点击...

    Java在Swing窗口上实现文字超链接.rar

    这个“Java在Swing窗口上实现文字超链接.rar”文件提供了一个示例,展示了如何在Swing组件中实现这种功能。主要涉及到的关键技术是`javax.swing.JLabel`和`java.lang.Runtime`类。 首先,`javax.swing.JLabel`是...

    QQ聊天窗口泡泡模式的Swing实现

    本篇文章将深入探讨如何使用Swing实现QQ聊天窗口中的“泡泡模式”,这是一种常见且吸引人的消息显示方式。 首先,Swing是Java AWT(Abstract Window Toolkit)的扩展,提供了更现代、更丰富的图形用户界面元素。它...

    java Swing读取图片

    本篇文章将详细讲解如何在Java Swing中读取和显示图片,以及与之相关的知识点。 首先,我们需要了解Java中的图像处理类。`java.awt.Image`类是表示图像的基本类,它提供了加载、显示和操作图像的方法。而`javax....

    javaswing仿QQ

    总之,"javaswing仿QQ"项目是一个全面的实践案例,涵盖了Java GUI开发、网络通信、自然语言处理和可能的音视频技术。对于学习Java Swing和理解如何将不同技术集成到一个实际应用中的开发者来说,这是一个宝贵的资源...

    swing+socket的QQ简单通信

    在本项目"swing+socket的QQ简单通信"中,我们主要关注的是如何使用Java的Swing库构建图形用户界面(GUI)以及利用Socket进行网络通信,实现类似QQ的即时通讯功能。Swing是Java标准版(Java SE)的一部分,提供了一套...

    Swing实现的QQ最终版

    基本实现了所有QQ的功能,包括聊天,离线功能,聊天窗口可发表情,截图,抖动,以及同步画板,另有添加删除好友,群及群组管理, 同时做了一些美化,比目前其他的java实现的聊天室绝对要好看很多, 数据库用的是...

    java swing实现pdf阅读器

    在Java Swing中,我们可以使用`JFrame`作为主窗口,`JPanel`作为内容面板,然后在面板上放置各种组件如`JButton`(按钮)、`JScrollPane`(滚动条)和`JLabel`(显示PDF内容)。对于PDF内容的展示,由于PDFBox不直接...

    仿QQ聊天系统(java swing)

    【标题】"仿QQ聊天系统(java swing)"是一个基于Java Swing开发的桌面应用程序,它模仿了QQ的基本功能,提供了用户间的实时通讯服务。Swing是Java标准版(J2SE)的一部分,用于构建图形用户界面(GUI)的库,具有...

    java swing实现仿QQ聊天器

    java swing 仿QQ 聊天器 源代码

    java swing界面高仿qq

    Java Swing界面高仿QQ是一个基于Java编程语言的项目,它旨在模仿腾讯QQ的用户界面和功能,提供一种桌面端的即时通讯体验。这个程序利用了Java的Swing库来构建图形用户界面(GUI),实现了包括语音通话、文件发送以及...

    swing实现的仿qq截图小工具

    本项目是使用Swing实现的一个仿QQ截图小工具,它旨在提供类似QQ截图的功能,让用户在桌面环境中能够方便地进行屏幕截图并进行编辑。 首先,Swing组件库提供了丰富的组件,如JFrame、JButton、JPanel等,这些组件...

    Java Swing 数据库 上传下载显示图片

    使用的是Swing组件和io流; 使用上传功能获取路径(我这边的是直接指定的,一般是从页面层获取的),然后传到dao层 然后通过dao层将二进制流写到数据库中(附上数据库); 点击下载功能,从数据库中获取二...

    Swing显示Html网页

    Swing显示HTML网页是Java开发GUI应用程序时的一个常见需求...总之,Swing显示HTML网页需要借助像JDIC这样的第三方库,通过创建和配置特定的组件来实现。在实际开发中,开发者应根据项目需求和环境选择合适的解决方案。

    Swing做的高仿QQ登陆界面

    Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes ...同时,此项目也鼓励进一步完善和扩展,例如添加网络通信功能,实现真实的登录验证,或者优化界面样式,使其更接近QQ的原生体验。

Global site tag (gtag.js) - Google Analytics