java - 使饼图在 JPanel 中可见

标签 java swing jpanel pie-chart

我对编程还很陌生,为了上学,我必须创建一个包含一定数量类(class)的程序。目前一切进展顺利,但我被困在数据的图形输出上。该程序是一个费用计算器。它是一个分为 6 个 JPanel 的框架。其中一个应该是我创建的 Piechart。饼图有效但不会显示在我的框架中。所以我一直在研究如何将正确的内容调用到面板中。我要添加饼图的面板代码是:

class CenterPaneel extends JPanel{
    private static final long serialVersionUID = -835526987955952967L;

    public CenterPaneel(){
        setLayout( new GridLayout(2,3,10,10));
        add( new Catagorie1Paneel() );                add( new Catagorie3Paneel() );           add( new SamenvattingPaneel() );
        add( new Catagorie2Paneel() );                add( new Catagorie4Paneel() );           add( new DataPaneel());
    }

饼图的代码是:

    class DataPaneel extends JPanel{
    private static final long serialVersionUID = -2980457707385367851L;
    private final ObservableList<PieChart.Data> details = FXCollections.observableArrayList();
    private BorderPane root;
    private PieChart pieChart;

    public void start(Stage primaryStage) {
        primaryStage.setTitle("test");
        details.addAll(new PieChart.Data("test1", 25),
                new PieChart.Data("test 2", 25),
                new PieChart.Data("test 3", 25),
                new PieChart.Data("test 4", 25)
            );


        root = new BorderPane();
        Scene scene = new Scene(root,600,500);

        pieChart = new PieChart();
        pieChart.setData(details);
        pieChart.setTitle("test");
        pieChart.setLegendSide(Side.BOTTOM);
        pieChart.setLabelsVisible(true);

        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

到目前为止代码的输出是:

enter image description here

如果有人能帮助我,我会很高兴:)

提前致谢

最佳答案

enter image description here

这样修改CenterPaneel的构造函数:

   import javafx.collections.FXCollections;
   import javafx.collections.ObservableList;
   import javafx.embed.swing.JFXPanel;
   import javafx.geometry.Side;
   import javafx.scene.Scene;
   import javafx.scene.chart.PieChart;
   import javafx.scene.control.ScrollPane;
   import javax.swing.JFrame;
   import javax.swing.JPanel;

public class Pie_Chart extends JFrame {

public static void main(String[] args) {
    Pie_Chart pc=new Pie_Chart();
    pc.getContentPane().add(new CenterPaneel());
    pc.setVisible(true);
}
}


class CenterPaneel extends JPanel{
private final static ObservableList<PieChart.Data> details =   FXCollections.observableArrayList();
private static PieChart pieChart;
    public CenterPaneel(){
    setLayout( new GridLayout(2,3,10,10));


    final JFXPanel dataPaneel = new JFXPanel();

    ScrollPane sp = new ScrollPane();

    details.addAll(new PieChart.Data("test1", 25),
            new PieChart.Data("test 2", 25),
            new PieChart.Data("test 3", 25),
            new PieChart.Data("test 4", 25)
        );
    pieChart = new PieChart();
    pieChart.setData(details);
    pieChart.setTitle("test");
    pieChart.setLegendSide(Side.BOTTOM);
    pieChart.setLabelsVisible(true);
    sp.setContent(pieChart);

    Scene scene = new Scene(sp, 600, 500);
    dataPaneel.setScene(scene);

    add( new Catagorie1Paneel() );                add( new Catagorie3Paneel() );           add( new SamenvattingPaneel() );
    add( new Catagorie2Paneel() );                add( new Catagorie4Paneel() );           add( dataPaneel);
}
}

我用空面板测试了这个,除了饼图,它成功了!

关于java - 使饼图在 JPanel 中可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46887682/

相关文章:

java - 确定 Java 中是否在旋转矩形内单击鼠标(AWT、swing)

java - 如何为Canvas添加JScrollBar?

java - 多个 JPanel 一个在另一个之上

java - 带有提供信息的列表的 JFrame

java - 使用 Java Swing 高效重画线条

调用函数时发生 Java 空指针异常

java - java中多线程的概念

java - J 标签和 J 复选框

java - 绑定(bind)到特定地址后 tomcat 服务器启动超时

java - 什么是 Java 数据挖掘,JDM?