我对编程还很陌生,为了上学,我必须创建一个包含一定数量类(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();
}
}
到目前为止代码的输出是:
如果有人能帮助我,我会很高兴:)
提前致谢
最佳答案
这样修改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/