Java 将JApplet添加到JPanel

Java 将JApplet添加到JPanel,java,swing,applet,Java,Swing,Applet,我正在Swing中开发我的新应用程序,我想在这个应用程序中重用JChempaint。我有JChempaint applet的jar文件(它是在Swing中使用JApplet开发的) 基本上,我想在我的新应用程序中将jar文件添加到JPanel。无论如何,这可能吗?JChempaint是开源的,我也有源代码 如何将JChempaint小程序添加到面板 以下是尝试实施建议后的详细信息------ 我从我的项目开始,并试图开发一个框架来嵌入JChemPaint窗口。 以下是我的布局代码: packa

我正在Swing中开发我的新应用程序,我想在这个应用程序中重用JChempaint。我有JChempaint applet的jar文件(它是在Swing中使用
JApplet
开发的)

基本上,我想在我的新应用程序中将jar文件添加到
JPanel
。无论如何,这可能吗?JChempaint是开源的,我也有源代码

如何将JChempaint小程序添加到面板


以下是尝试实施建议后的详细信息------ 我从我的项目开始,并试图开发一个框架来嵌入JChemPaint窗口。 以下是我的布局代码:

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);
    }
}
目前,我试图在上面的代码中插入一个空表。稍后,它将填充相关数据

这给了我一个有四个块的框架,左上角有一个JCHemPaint窗口,下两个块有一个表

现在,为了在Panel 1中添加JChemPaint,我编辑了此文件中的代码。我更改了CreatePanel 1的方法:

//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));
}
这仅输出JChemPaint窗口

如果我的框架存在问题,我无法将其放入面板1。 我该怎么做?
谢谢大家!

正如所建议的,它是一个标准的Java应用程序。请参见
showInstance()
,以获取构建
JChemPaintPanel
并按照建议将其添加到
JFrame

是标准Java应用程序的示例。请参见
showInstance()
,以获取构建
JChemPaintPanel
并按照建议将其添加到
JFrame

是标准Java应用程序的示例。请参见
showInstance()
,以获取构建
JChemPaintPanel
并按照建议将其添加到
JFrame

是标准Java应用程序的示例。请参见
showInstance()
,以获取构造
JChemPaintPanel
并将其添加到
JFrame

的示例,“jar”是一个包含Java类和资源的zip文件,它不是Swing组件,因此不能被视为Swing组件。因此,对于您的直接问题,
“我可以向JPanel添加一个Jar吗?”
的简短回答是不,您不能。但是,如果jar文件包含从Swing组件(如JPanel或JComponent)扩展的Swing类,并且文档或源代码能够告诉您这一点,那么是的,您可以在自己的Swing GUI中使用这些类的对象。非常感谢。这肯定会对我有所帮助,“jar”是一个包含Java类和资源的zip文件,它不是Swing组件,因此不能被视为Swing组件。因此,对于您的直接问题,
“我可以向JPanel添加一个Jar吗?”
的简短回答是不,您不能。但是,如果jar文件包含从Swing组件(如JPanel或JComponent)扩展的Swing类,并且文档或源代码能够告诉您这一点,那么是的,您可以在自己的Swing GUI中使用这些类的对象。非常感谢。这肯定会对我有所帮助,“jar”是一个包含Java类和资源的zip文件,它不是Swing组件,因此不能被视为Swing组件。因此,对于您的直接问题,
“我可以向JPanel添加一个Jar吗?”
的简短回答是不,您不能。但是,如果jar文件包含从Swing组件(如JPanel或JComponent)扩展的Swing类,并且文档或源代码能够告诉您这一点,那么是的,您可以在自己的Swing GUI中使用这些类的对象。非常感谢。这肯定会对我有所帮助,“jar”是一个包含Java类和资源的zip文件,它不是Swing组件,因此不能被视为Swing组件。因此,对于您的直接问题,
“我可以向JPanel添加一个Jar吗?”
的简短回答是不,您不能。但是,如果jar文件包含从Swing组件(如JPanel或JComponent)扩展的Swing类,并且文档或源代码能够告诉您这一点,那么是的,您可以在自己的Swing GUI中使用这些类的对象。非常感谢。这肯定会对我有帮助。谢谢@trashgood。我将研究这个例子,如果我有任何问题,我会回复你;引用了一些相关的例子。谢谢@trashgood。我将研究这个例子,如果我有任何问题,我会回复你;引用了一些相关的例子。谢谢@trashgood。我将研究这个例子,如果我有任何问题,我会回复你;引用了一些相关的例子。谢谢@trashgood。我将研究这个例子,如果我有任何问题,我会回复你;列举了一些相关的例子。