[英]Add JApplet to JPanel
I am developing my new application in Swing and I want to reuse JChempaint in this application. 我正在Swing中开发新的应用程序,并且想在该应用程序中重用JChempaint。 I have the jar file of JChempaint applet (which is developed in Swing using JApplet
). 我有JChempaint applet的jar文件(使用JApplet
在Swing中开发)。
Basically, I want to add jar file to JPanel
in my new application. 基本上,我想在我的新应用程序中将jar文件添加到JPanel
。 In anyway, is this possible? 无论如何,这可能吗? JChempaint being open source, I also have the source code. JChempaint正在开源,我也有源代码。
How can I add the JChempaint applet to a panel? 如何将JChempaint小程序添加到面板?
Following are the details after trying to implement the suggestions------ I started with my project and tried to develop a skeleton to embed the JChemPaint window in it. 以下是尝试实施建议后的详细信息------我从我的项目开始,尝试开发一个框架以将JChemPaint窗口嵌入其中。 Following is the code of my layout: 以下是我的布局代码:
package LearnSwingPkg;
import java.awt.BorderLayout;
class SplitPane extends JFrame {
private JPanel panel1;
private JPanel panel2;
private JScrollPane panel3;
private JScrollPane panel4;
protected JSplitPane split;
public SplitPane(){
super("Learn Swing");
JFrame.setDefaultLookAndFeelDecorated(true);
setSize(900, 700);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(0,0);
setTitle( "Split Pane Application" );
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
// Create the panels
createPanel1();
createPanel2();
createPanel3();
createPanel4();
JSplitPane spLeft = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true,panel1, panel3);
JSplitPane spRight = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true, panel2, panel4);
split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true,spLeft, spRight);
split.setOneTouchExpandable(true);
getContentPane().add(split, BorderLayout.CENTER);
}
//top left
public void createPanel1(){
panel1 = new JPanel();
panel1.setLayout( new BorderLayout() );
panel1.add((new TextArea("Panel1")));
panel1.setPreferredSize( new Dimension( 450, 400 ) );
panel1.setMaximumSize(new Dimension(450, 400));
}
//top right
public void createPanel2(){
panel2 = new JPanel();
panel2.setLayout( new BorderLayout() );
panel2.add((new TextArea("Panel2")));
panel2.setPreferredSize( new Dimension( 450, 400 ) );
panel2.setMaximumSize(new Dimension(450, 400));
}
//bottom left
public void createPanel3(){
Label label_prop = new Label("Properties:", Label.LEFT);
String[] columnNames = {"Properties",
"",
};
Object[][] data = {
{"", "",}, {"", ""}, {"", ""},{"", ""},
{"", "",}, {"", ""}, {"", ""},{"", ""},
{"", "",}, {"", ""}, {"", ""},{"", ""}
};
JTable table = new JTable(data, columnNames);
table.setBackground(getBackground());
table.setBackground(Color.LIGHT_GRAY);
table.setRowHeight(20);
table.setBorder(BasicBorders.getMenuBarBorder());
panel3 = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZO
panel3.add(label_prop);
panel3.setPreferredSize( new Dimension( 20, 20 ) );
panel3.setMinimumSize( new Dimension( 20, 20 ) );
}
//bottom right
public void createPanel4(){
panel4 = new JScrollPane();
//panel4.setLayout( new FlowLayout() );
String[] columnNames = {"Activities",
"",
};
Object[][] data = {
{"", "",}, {"", ""}, {"", ""},{"", ""},
{"", "",}, {"", ""}, {"", ""},{"", ""},
{"", "",}, {"", ""}, {"", ""},{"", ""}
};
JTable table = new JTable(data, columnNames);
table.setBackground(getBackground());
table.setBackground(Color.LIGHT_GRAY);
table.setRowHeight(20);
table.setBorder(BasicBorders.getMenuBarBorder());
panel4 = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
panel4.setPreferredSize( new Dimension( 20, 20 ) );
panel4.setMinimumSize( new Dimension( 20, 20 ) );
}
public static void main( String args[] ){
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception evt) {}
// Create an instance of the test application
SplitPane mainFrame = new SplitPane();
mainFrame.setVisible( true );
mainFrame.setBackground(Color.blue);
}
}
For time being, I have tried to insert an empty table,in the above code. 暂时,我尝试在上面的代码中插入一个空表。 Later, it will be populated with relevant data. 稍后,它将填充相关数据。
This gives me a Frame having four blocks, the upper left will have JCHemPaint window, Lower two blocks will have a table. 这给了我一个有四个块的Frame,左上方有JCHemPaint窗口,下两个块有一个表格。
Now, in order to add JChemPaint in Panel 1 I edited the code in this file.I changed the method createPanel1 : 现在,为了在面板1中添加JChemPaint,我编辑了该文件中的代码,更改了方法createPanel1:
//top left
public void createPanel1(){
panel1 = new JPanel();
panel1.setLayout( new BorderLayout() );
JChemPaint.showInstance(filename, null, null, debug);
panel1.setPreferredSize( new Dimension( 450, 400 ) );
panel1.setMaximumSize(new Dimension(450, 400));
}
This outputs me the JChemPaint window only. 这仅向我输出JChemPaint窗口。
I am unable to place it in to the panel 1 if my framework. 如果我使用框架,则无法将其放入面板1中。 How can I do this? 我怎样才能做到这一点? Thank you! 谢谢!
As suggested here , JChemPaint
is a standard Java application. 作为建议在这里 , JChemPaint
是一个标准的Java应用程序。 See showInstance()
for an example of constructing a JChemPaintPanel
and adding it to a JFrame
. 有关构造JChemPaintPanel
并将其添加到JFrame
的示例,请参见showInstance()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.