我现在用了一个Comfyj来调用OCX控件,已经可以在JFrame中调用出来控件了。
调用的方法大致如下:
public class Test extends JFrame { public Test (){
Container contentPane = getContentPane();
final OleContainer oleContainer = new OleContainer();
oleContainer.createObject(CLASS_ID);
getContentPane().add(oleContainer, BorderLayout.CENTER);
}
}
这样应该是通过getContentPane()取得JFrame的panel然后将控件add到这个panel中,可是如果我直接new一个JPanel再add控件的话就是没都显示不出来了,是因为JPanel是轻量级的问题么?OleContainer 应该是重量级的
java.lang.Object
extended byjava.awt.Component
extended byjava.awt.Canvas
extended bycom.jniwrapper.win32.automation.OleContainer 在JPanel中直接用的addpublic Test extends JPanel(){
pulic Test(){
oleContainer.createObject(CLASS_ID);
oleContainer.createObject(CLASS_ID);
add(oleContainer, BorderLayout.CENTER);
}
}
实际上我是想把这个控件放在一个TopComponent(Component的子类,NetBeans里的)里,如果直接放在JPanel里不行还有什么办法?小弟刚接触Swing不久很多东西不知道,麻烦大侠们指点一下啊~
调用的方法大致如下:
public class Test extends JFrame { public Test (){
Container contentPane = getContentPane();
final OleContainer oleContainer = new OleContainer();
oleContainer.createObject(CLASS_ID);
getContentPane().add(oleContainer, BorderLayout.CENTER);
}
}
这样应该是通过getContentPane()取得JFrame的panel然后将控件add到这个panel中,可是如果我直接new一个JPanel再add控件的话就是没都显示不出来了,是因为JPanel是轻量级的问题么?OleContainer 应该是重量级的
java.lang.Object
extended byjava.awt.Component
extended byjava.awt.Canvas
extended bycom.jniwrapper.win32.automation.OleContainer 在JPanel中直接用的addpublic Test extends JPanel(){
pulic Test(){
oleContainer.createObject(CLASS_ID);
oleContainer.createObject(CLASS_ID);
add(oleContainer, BorderLayout.CENTER);
}
}
实际上我是想把这个控件放在一个TopComponent(Component的子类,NetBeans里的)里,如果直接放在JPanel里不行还有什么办法?小弟刚接触Swing不久很多东西不知道,麻烦大侠们指点一下啊~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货