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);
}
}
分享到:
相关推荐
HoneyViewer图片查看器是一个基于java Swing实现的图片查看器,主要实现了图片展示功能。 本实验手册根据需求完成图片读取、切换等功能,平台的全称为:基于java Swing实现的HoneyViewer图片查看器(后简称为: Keep-...
【Java Swing实现的QQ】是一个基于Java图形用户界面(GUI)库Swing开发的应用程序,它旨在模拟并实现QQ的基本功能。Swing是Java Standard Edition(Java SE)的一部分,提供了丰富的组件库,用于构建桌面应用程序。...
图标和图片的显示则可以通过 ImageIcon 类完成。为了实现更加美观的界面,还可以使用JLayeredPane和AlphaComposite来实现透明效果,或者使用自定义的Paint方法绘制复杂图形。 在实现过程中,还需要考虑到线程安全...
在"java Swing实现的仿qq"项目中,我们将会探讨如何使用Swing来构建一个类似于腾讯QQ的客户端应用。 首先,我们需要理解Swing中的基本组件和布局管理器。例如,JFrame是窗口的基础,JLabel用于显示文本或图标,...
以上就是关于"java swing程序实现点击图片列表改变图片"的核心知识讲解,通过理解和应用这些知识点,开发者可以创建出动态且互动性强的图形用户界面。在实际开发中,应根据项目需求进行适当的调整和扩展。
在Swing界面设计方面,你需要创建JFrame作为主窗口,然后添加各种组件,如JButton(用于触发添加和查询操作)、JTextField(用户输入数据)和JTable(显示查询结果)。使用ActionListener监听按钮事件,当用户点击...
这个“Java在Swing窗口上实现文字超链接.rar”文件提供了一个示例,展示了如何在Swing组件中实现这种功能。主要涉及到的关键技术是`javax.swing.JLabel`和`java.lang.Runtime`类。 首先,`javax.swing.JLabel`是...
本篇文章将深入探讨如何使用Swing实现QQ聊天窗口中的“泡泡模式”,这是一种常见且吸引人的消息显示方式。 首先,Swing是Java AWT(Abstract Window Toolkit)的扩展,提供了更现代、更丰富的图形用户界面元素。它...
本篇文章将详细讲解如何在Java Swing中读取和显示图片,以及与之相关的知识点。 首先,我们需要了解Java中的图像处理类。`java.awt.Image`类是表示图像的基本类,它提供了加载、显示和操作图像的方法。而`javax....
总之,"javaswing仿QQ"项目是一个全面的实践案例,涵盖了Java GUI开发、网络通信、自然语言处理和可能的音视频技术。对于学习Java Swing和理解如何将不同技术集成到一个实际应用中的开发者来说,这是一个宝贵的资源...
在本项目"swing+socket的QQ简单通信"中,我们主要关注的是如何使用Java的Swing库构建图形用户界面(GUI)以及利用Socket进行网络通信,实现类似QQ的即时通讯功能。Swing是Java标准版(Java SE)的一部分,提供了一套...
基本实现了所有QQ的功能,包括聊天,离线功能,聊天窗口可发表情,截图,抖动,以及同步画板,另有添加删除好友,群及群组管理, 同时做了一些美化,比目前其他的java实现的聊天室绝对要好看很多, 数据库用的是...
在Java Swing中,我们可以使用`JFrame`作为主窗口,`JPanel`作为内容面板,然后在面板上放置各种组件如`JButton`(按钮)、`JScrollPane`(滚动条)和`JLabel`(显示PDF内容)。对于PDF内容的展示,由于PDFBox不直接...
【标题】"仿QQ聊天系统(java swing)"是一个基于Java Swing开发的桌面应用程序,它模仿了QQ的基本功能,提供了用户间的实时通讯服务。Swing是Java标准版(J2SE)的一部分,用于构建图形用户界面(GUI)的库,具有...
java swing 仿QQ 聊天器 源代码
Java Swing界面高仿QQ是一个基于Java编程语言的项目,它旨在模仿腾讯QQ的用户界面和功能,提供一种桌面端的即时通讯体验。这个程序利用了Java的Swing库来构建图形用户界面(GUI),实现了包括语音通话、文件发送以及...
本项目是使用Swing实现的一个仿QQ截图小工具,它旨在提供类似QQ截图的功能,让用户在桌面环境中能够方便地进行屏幕截图并进行编辑。 首先,Swing组件库提供了丰富的组件,如JFrame、JButton、JPanel等,这些组件...
使用的是Swing组件和io流; 使用上传功能获取路径(我这边的是直接指定的,一般是从页面层获取的),然后传到dao层 然后通过dao层将二进制流写到数据库中(附上数据库); 点击下载功能,从数据库中获取二...
Swing显示HTML网页是Java开发GUI应用程序时的一个常见需求...总之,Swing显示HTML网页需要借助像JDIC这样的第三方库,通过创建和配置特定的组件来实现。在实际开发中,开发者应根据项目需求和环境选择合适的解决方案。
Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes ...同时,此项目也鼓励进一步完善和扩展,例如添加网络通信功能,实现真实的登录验证,或者优化界面样式,使其更接近QQ的原生体验。