Java-如何在JFrame中的IDE生成的JPanel上绘制形状

Java-如何在JFrame中的IDE生成的JPanel上绘制形状,java,netbeans,jframe,draw,shapes,Java,Netbeans,Jframe,Draw,Shapes,我正在使用netbeanside编写GUI应用程序。它将计算各种基本2D/3D形状的面积/体积。 我创建了一个新的JFrame,在它里面是一个JTabbedPane,它有两个用于二维和三维形状的选项卡 我计划为每个形状的选项卡创建自定义JPEG,这不是问题,但我无法在形状类型选项卡中绘制形状(见图) 只有一个.java文件,我将其内容粘贴在这里。请帮帮我,我真的很困惑,我怎么才能避开这个问题 // @author Žanas Stundys package geometrinis.projekt

我正在使用
netbeanside
编写GUI应用程序。它将计算各种基本2D/3D形状的面积/体积。 我创建了一个新的
JFrame
,在它里面是一个
JTabbedPane
,它有两个用于二维和三维形状的选项卡

我计划为每个形状的选项卡创建自定义JPEG,这不是问题,但我无法在形状类型选项卡中绘制形状(见图)

只有一个
.java
文件,我将其内容粘贴在这里。请帮帮我,我真的很困惑,我怎么才能避开这个问题

// @author Žanas Stundys
package geometrinis.projektas;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//
public class PagrindinisLangas extends javax.swing.JFrame {


/* Creates new form PagrindinisLangas */
public PagrindinisLangas() {
    initComponents();

}
//
/* This method is called from within the constructor to initialize the form */
//@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jEditorPane1 = new javax.swing.JEditorPane();
    jTabbedPane1 = new javax.swing.JTabbedPane();
    jPanel1 = new javax.swing.JPanel();
    jTabbedPane2 = new javax.swing.JTabbedPane();
    jPanel3 = new javax.swing.JPanel();
    jPanel4 = new javax.swing.JPanel();
    jPanel2 = new javax.swing.JPanel();

    jScrollPane1.setViewportView(jEditorPane1);

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    setResizable(false);
    setSize(new java.awt.Dimension(960, 480));

    jTabbedPane1.setToolTipText("");

    jTabbedPane2.setTabPlacement(javax.swing.JTabbedPane.LEFT);

    javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
    jPanel3.setLayout(jPanel3Layout);
    jPanel3Layout.setHorizontalGroup(
        jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );
    jPanel3Layout.setVerticalGroup(
        jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );

    jTabbedPane2.addTab("", new javax.swing.ImageIcon(getClass().getResource("/Assets/2D/square.png")), jPanel3, "Kvadratas / Stačiakampis"); // NOI18N

    javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
    jPanel4.setLayout(jPanel4Layout);
    jPanel4Layout.setHorizontalGroup(
        jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );
    jPanel4Layout.setVerticalGroup(
        jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );

    jTabbedPane2.addTab("", new javax.swing.ImageIcon(getClass().getResource("/Assets/2D/circle.png")), jPanel4, "Apskritimas"); // NOI18N

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jTabbedPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 876, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jTabbedPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 387, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );

    jTabbedPane1.addTab("2D", new javax.swing.ImageIcon(getClass().getResource("/Assets/icon2d.png")), jPanel1); // NOI18N

    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
    jPanel2.setLayout(jPanel2Layout);
    jPanel2Layout.setHorizontalGroup(
        jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );
    jPanel2Layout.setVerticalGroup(
        jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );

    jTabbedPane1.addTab("3D", new javax.swing.ImageIcon(getClass().getResource("/Assets/icon3d.png")), jPanel2, ""); // NOI18N

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 960, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 480, Short.MAX_VALUE)
    );

    pack();
}// </editor-fold>                        

/* @param args the command line arguments */
public static void main(String args[]){
    /* Create and display the form */

    java.awt.EventQueue.invokeLater(() -> {
        new PagrindinisLangas().setVisible(true);
    });

}
// Variables declaration - do not modify                     
private javax.swing.JEditorPane jEditorPane1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTabbedPane jTabbedPane2;
// End of variables declaration                   
}
/@authorŽanas Stundys
包geometrinis.projektas;
导入java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
//
公共类PagrindinisLangas扩展了javax.swing.JFrame{
/*创建新表单PagrindinisLangas*/
公共PagrindinisLangas(){
初始化组件();
}
//
/*从构造函数中调用此方法来初始化表单*/
//@抑制警告(“未选中”)
//                           
私有组件(){
jScrollPane1=newjavax.swing.JScrollPane();
jEditorPane1=newjavax.swing.JEditorPane();
jTabbedPane1=newjavax.swing.JTabbedPane();
jPanel1=newjavax.swing.JPanel();
jTabbedPane2=newjavax.swing.JTabbedPane();
jPanel3=newjavax.swing.JPanel();
jPanel4=newjavax.swing.JPanel();
jPanel2=newjavax.swing.JPanel();
jScrollPane1.setViewportView(jEditorPane1);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setCursor(新java.awt.Cursor(java.awt.Cursor.DEFAULT_Cursor));
可设置大小(假);
setSize(新java.awt.Dimension(960480));
jTabbedPane1.setToolTipText(“”);
setTabPlacement(javax.swing.JTabbedPane.LEFT);
javax.swing.GroupLayout jPanel3Layout=新的javax.swing.GroupLayout(jPanel3);
setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,0,短.MAX_值)
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,0,短.MAX_值)
);
jTabbedPane2.addTab(“,new javax.swing.ImageIcon(getClass().getResource(“/Assets/2D/square.png”)),jPanel3,“Kvadratas/Stačiakampis”);//NOI18N
javax.swing.GroupLayout jPanel4Layout=新的javax.swing.GroupLayout(jPanel4);
setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,0,短.MAX_值)
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,0,短.MAX_值)
);
jTabbedPane2.addTab(“,new javax.swing.ImageIcon(getClass().getResource(“/Assets/2D/circle.png”)),jPanel4,“Apskritimas”);//NOI18N
javax.swing.GroupLayout jPanel1Layout=新的javax.swing.GroupLayout(jPanel1);
setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addContainerGap()
.addComponent(jTabbedPane2,javax.swing.GroupLayout.PREFERRED_SIZE,876,javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addContainerGap()
.addComponent(jTabbedPane2,javax.swing.GroupLayout.PREFERRED_SIZE,387,javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u VALUE))
);
jTabbedPane1.addTab(“2D”,新的javax.swing.ImageIcon(getClass().getResource(“/Assets/icon2d.png”)),jPanel1);//NOI18N
javax.swing.GroupLayout jPanel2Layout=新的javax.swing.GroupLayout(jPanel2);
设置布局(jPanel2布局);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,0,短.MAX_值)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,0,短.MAX_值)
);
jTabbedPane1.addTab(“3D”,新的javax.swing.ImageIcon(getClass().getResource(“/Assets/icon3d.png”)),jPanel2,”;//NOI18N
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTabbedPane1,javax.swing.GroupLayout.Alignment.TRAILING,javax.swing.GroupLayout.DEFAULT_SIZE,960,Short.MAX_值)
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTabbedPane1,javax.swing.GroupLayout.Alignment.TRAILING,javax.swing.GroupLayout.DEFAULT\u SIZE,480,Short.MAX\u值)
);
包装();
}//                         
/*@param指定命令行参数*/
公共静态void main(字符串参数[]){
/*创建并显示表单*/
java.awt.EventQueue.invokeLater(()->{
新建PagrindinisLangas().setVisible(true);
});
}
//变量声明-不修改
私有javax.swing.JEditorPane jEditorPane1;
私有javax.swing.JPanel jPanel1;
私有javax.swing.JPanel jPanel2;
私有javax.swing.JPanel jPanel3;
私有javax.swing.JPanel jPanel4;
私有javax.swing.JScrollPane-jScrollPane1;
私有javax.swing.JTabbedPane jTabbedPane1;
私有javax.swing.JT
public class PanelWithRectangle extends JPanel {

    public PanelWithRectangle() {
        setPreferredSize(new Dimension(200,100));
    }


    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g); 
        Graphics2D g2d = (Graphics2D) g;
        g2d.draw(new Rectangle2D.Double(10, 10,20, 25));
    }
}
public class PanelWithBox extends JFXPanel {

    public PanelWithBox() {
        setPreferredSize(new Dimension(200,100));
        Platform.runLater(this::initFx);
    }

    private void initFx() {
        Group g = new Group();
        Scene scene = new Scene(g);
        Box box = new Box(20, 30, 40);
        box.setMaterial(new PhongMaterial(Color.RED));
        box.getTransforms().addAll(Transform.translate(50, 25), new Rotate(30, new Point3D(1, 1, 1)));
        g.getChildren().add(box);
        setScene(scene);
    }
}