Я разрабатываю свое новое приложение в Swing, и я хочу повторно использовать JChempaint в этом приложении. У меня есть jar-файл JChempaint-апплета (который разработан в Swing с использованием JApplet
).Добавить JApplet to JPanel
В принципе, я хочу добавить файл 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, нижние два блока будут иметь таблицу.
Теперь для того, чтобы добавить JChemPaint панели 1 редактировал код в этом file.i изменил метод 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));
}
Это выводит меня только окно JChemPaint.
Я не могу поместить его в панель 1, если мои рамки. Как я могу это сделать? Спасибо!
«jar», который является zip-файлом, который содержит классы и ресурсы Java, не является компонентом Swing и поэтому не может рассматриваться как таковой. Итак, краткий ответ на ваш прямой вопрос: «Я могу добавить Jar в JPanel?» «Нет, вы не можете. Но если файл jar содержит классы Swing, которые простираются от компонентов Swing, таких как JPanel или JComponent, и документация или исходный код смогут вам рассказать, тогда да, вы можете использовать объекты этих классов в своем собственном графическом интерфейсе Swing. –
Большое вам спасибо. Это определенно поможет мне. – ksk