由于项目中有用到swing 嵌入word,(需要可以编辑 或不编辑也要可以修改字体大小或修改字体颜色)
在网络上google 一直都没有答案,于是自己有想了以下几种方案:
1: 嵌入浏览器,浏览器在嵌入word
2: swing 嵌入swt窗体,swt 可操作word
3: 采用jacob
实践:
1:需要swing 先嵌入浏览器,在浏览器 嵌入 可编辑word。
最终 卡在 可编辑word 上面
2: 需要架构swing 与swt 的桥梁 ,最终实现,一会贴出代码!!!
3: 可以进行数据交互,但无法进行展示
贴出代码:做过笔记,也希望能给有用的朋友!
贴代码:
import java.awt.BorderLayout;
import java.awt.Canvas;
import javax.swing.JFrame;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.ole.win32.OleClientSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Sword extends JFrame {
private static final long serialVersionUID = -7511601547609623217L;
private static OleFrame oleFrame1;
public static void main(String[] args) {
final JFrame frame = new JFrame();
//关键 使用 canvas 进行交互
Canvas canvas = new Canvas();
frame.getContentPane().add(canvas,BorderLayout.CENTER);
frame.setVisible(true);
frame.setSize(800, 600);
final Display display = new Display();
//利用SWT_AWT.new_Shell 交互
final Shell shell = SWT_AWT.new_Shell(display,canvas);
shell.setLayout(new FillLayout());
shell.layout();
shell.setSize(800, 600);
initGUI(shell);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
private static void initGUI(Shell shell) {
try {
FillLayout thisLayout = new FillLayout(org.eclipse.swt.SWT.HORIZONTAL);
shell.setLayout(thisLayout);
// shell.setSize(229, 54);
{
oleFrame1 = new OleFrame(shell, SWT.NONE);
{
try {
OleClientSite site = new org.eclipse.swt.ole.win32.OleClientSite(
oleFrame1, org.eclipse.swt.SWT.NONE,
"Word.Document");
site.setBounds(0, 0, 104, 54);
site.doVerb(org.eclipse.swt.ole.win32.OLE.OLEIVERB_SHOW);
} catch (org.eclipse.swt.SWTException e) {
String str = "Create OleClientSite Error"
+ e.toString();
System.out.println(str);
return;
}
}
}
shell.layout();
} catch (Exception e) {
e.printStackTrace();
}
}
}
实现过程中参考以下:
http://niubt.360doc.com/content/081214/10/7635_2120288.html
http://blog.csdn.net/fafey/archive/2006/05/10/721988.aspx
以上代码 只做了嵌入动作,存在几个点: 嵌入的word 没有滚动条,运行的时候要等1秒才会出来word,其他慢慢修补了。
至少能嵌入进去,不用找jacob jidi 以及ocx 麻烦!!! 总算做出来了 hight 下!!!
分享到:
相关推荐
在IT行业中,有时候我们需要在Java应用中集成第三方控件或者组件来实现特定的功能,比如在SWT(Standard Widget Toolkit)环境中嵌入Word编辑器。这篇博客"SWT中嵌入Word控件应用"可能就是讲述如何在Java SWT界面中...
项目内集成的一些小功能,如“浏览器”、“WORD”、“Excel”、“记事本”和“计算器”,显示了Swing的跨平台能力和组件复用性。这些功能的实现可能依赖于Java的Runtime类来执行系统命令,或者使用Apache POI库处理...
一旦印章图像准备完毕,我们需要将其转换为适合嵌入Word文档的格式,如JPEG或PNG。 接下来,我们需要找到Word文档中表格的指定位置。在Apache POI中,可以使用XWPFTable类代表Word中的表格,通过遍历表格的...
在探讨如何用Java实现下拉菜单的过程中,我们主要聚焦于使用Java AWT(Abstract Window Toolkit)和Swing组件来创建动态、交互式的下拉菜单。虽然提供的代码片段中使用了Applet的方式,但在现代Java开发中,更推荐...
虽然不是直接用于操作Word或PDF,JavaFX和Swing这两个Java GUI库可以用来创建用户界面,显示和编辑这些文档的内容,例如通过嵌入Web浏览器组件来展示PDF。 为了在实际项目中使用这些库,你需要按照以下步骤操作: ...
2. **编写和调用 Applet**:包括 Applet 的生命周期,以及如何在 HTML 页面中嵌入 Applet。 **第七章 线程** 1. **简介**:线程是程序中的执行路径,允许多个任务同时进行。 2. **线程的实现**:可以通过继承 ...
在.NET框架中,dsoframer可能作为一个.NET控件或库,允许开发人员在C#、VB.NET或其他支持的.NET语言中方便地嵌入和操作Microsoft Word文档。它可能提供了丰富的API接口,用于读取、写入、编辑和显示Word文档,同时...
- 在HTML中嵌入Java小程序使用`<applet>`标签,其属性包括`code`、`width`和`height`,但不包括`color`。 12. **Javadoc注释**: - `/**...*/`形式的注释可以用于Javadoc命令,生成API文档。 13. **线程控制**:...
通过其他库,如Qt、GTK、MFC和Swing,Python也能支持更多种类的GUI开发。 在互联网脚本领域,Python的标准库包含了大量用于网络编程的模块,如套接字、CGI、HTTP、FTP等。Python可以轻松地处理服务器端和客户端的...
Java applet是嵌入在网页中的小程序,可以增强网页的交互性。学习如何编写和部署applets,以及理解其生命周期和安全性问题。 8. **Java Swing和JavaFX** 这是Java用于构建图形用户界面(GUI)的工具包。Swing提供...
JExcel API提供了更多的高级功能,如Excel应用程序的自动化,可以方便地在Swing和AWT应用中嵌入工作簿。 总的来说,Apache POI是一个强大且广泛使用的工具,适用于需要与Microsoft Office文件交互的Java开发者。...
1. **Swing容器**: - 容器可以嵌套其他容器,如`JPanel`可以作为其他容器的组成部分。 - 使用`BorderLayout`布局管理器时,组件的添加顺序不影响其最终位置。 2. **事件处理**: - Java中的事件模型基于监听器...
9. **字体支持**:支持字体替换和嵌入,确保文档中使用的任何字体都能正确显示。 10. **文档兼容性**:能读写由Word 2007或安装了兼容包的早期版本创建的docx文件,但不支持Word 2003的XML文档,因为命名空间不同。 ...
2. **Applet与Application的区别**:Applet是嵌入在网页中的小型Java程序,而Application是独立运行的Java程序。两者启动方式、生命周期和交互方式有所不同,项目要求比较两者的不同。 3. **接口(Interface)**:...
11. 字段大小属性限制了字段能容纳的最大字符数,OLE是对象链接和嵌入,不属于字段大小。 12. 扩内存通常指的是增加RAM(随机存取存储器)芯片,而不是ROM。 13. 在Word2003中,表格的每一行中各单元格的高度是...
16. Swing组件中,JDialog对象可以指定布局管理器,比如使用`setLayout()`方法。 17. 使用`SKIP -1`跳过了第一条记录,`DISP NEXT 2`显示了下两条记录,所以`RECNO()`返回的是第三条记录的索引,即2。 18. 在SQL中...
24. 直接添加组件的Swing容器是JPanel,它是容器类,可以容纳其他组件。 25. 四组函数中返回值的数据类型一致的是A,都是日期或时间相关的函数。 以上解析涵盖了题目中涉及到的大部分知识点,这些内容对于准备...
- **解析**:FlowLayout是Swing中最简单的布局管理器,它将组件放置在一个容器中,按照它们被添加的顺序水平排列。如果一行放不下,就换行。因此,正确答案是A.FlowLayout。 ### 9. Word 文本格式化 - **知识点**...
14. **AWT与Swing**:AWT是Java的基础图形用户界面库,Swing是其扩展和提高,两者可以同时使用,并且Swing类不从AWT继承。 15. **OLE对象数据类型**:OLE对象数据类型字段所嵌入的数据对象的数据通常存储在数据库中...