我必须制作一个绘图工具,这是我的问题
Screenshot of another case the issue happens
因此,当图形进入另一个面板时,具有按钮的面板和具有参数的面板,我希望图形位于这些面板下方
JPanel panel_contenu = new JPanel();
panel_contenu.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(panel_contenu);
panel_contenu.setLayout(null);
JPanel panel_dessin = new JPanel();
panel_dessin.setBounds(0, 139, 1257, 831);
panel_contenu.add(panel_dessin);
panel_dessin.setOpaque(true);
JPanel panel_parametre = new JPanel();
panel_parametre.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
panel_parametre.setBounds(1264, 0, 247, 977);
panel_contenu.add(panel_parametre);
panel_parametre.setLayout(null);
JPanel panel_boutons = new JPanel();
panel_boutons.setBounds(0, 0, 1264, 101);
panel_contenu.add(panel_boutons);
panel_boutons.setLayout(null);
if (cbo_listeobj.getSelectedItem() instanceof Triangle) {
Triangle t = new Triangle();
t = (Triangle) cbo_listeobj.getSelectedItem();
t.deplacer(val_vect_x, val_vect_y);
repaint();
} // this is when i move a figure
public void paint(Graphics g) {
super.paintComponents(g);
Point2D p1 = new Point2D(val_p1_x, val_p1_y);// Commun à toutes les figures
// TRIANGLE
if (Btriangle2) {
Point2D p2 = new Point2D(val_p2_x, val_p2_y);
Point2D p3 = new Point2D(val_p3_x, val_p3_y);
Triangle t = new Triangle(p1, p2, p3);
colltri.add(t);
listeobj.add(t, cbo_listeobj);
Btriangle2 = false;
}
colltri.afficher(g); //this is when it paint the contentPane
btnOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
edt_vect_x.setEditable(true);
edt_vect_y.setEditable(true);
btnDepl.setEnabled(true);
if (Btriangle) {
Btriangle2 = true;
Btriangle = false;
val_p1_x = Integer.parseInt(edt_p1_x.getText());
val_p1_y = Integer.parseInt(edt_p1_y.getText());
val_p2_x = Integer.parseInt(edt_p2_x.getText());
val_p2_y = Integer.parseInt(edt_p2_y.getText());
val_p3_x = Integer.parseInt(edt_p3_x.getText());
val_p3_y = Integer.parseInt(edt_p3_y.getText());
repaint();
} // the ok Button display the figures
所以我的主要问题是,当您显示或移动图形时,图形通过其他面板,而不是在其他面板下方,您会看到图形通过面板,如屏幕截图所示。
我希望图形在显示时以及在使用参数移动图形时位于其他面板下方。我有4个面板
panel_contenu
是contentPane,其中包括其他面板
panel_dessin
,panel_parametre
和panel_boutons
。
答案 0 :(得分:0)
通过覆盖JPanel上的paintComponent()来完成自定义绘制。阅读关于Custom Painting
的Swing教程中的部分然后将不同的面板添加到框架:
所以基本逻辑是:
JPanel toolBarPanel = new CustomToolBarPanel();
JPanel paintingPanel = new CustomPaintingPanel();
frame.add(toolBarPanel, BorderLayout.PAGE_START)
frame.add(paintingPanel, BurderLayout.CENTER);
上面的教程链接还包含How to Use BorderLayout
的一部分。