Điều này tương tự như câu hỏi tôi đã hỏi hôm qua nhưng cụ thể hơn cho vấn đề. Phương pháp chính xác để thêm JFreeChart vào dự án NetBeans đã chứa nhiều tiện ích con khác nhau là gì? Bản cập nhật của tôiChart() ẩn toàn bộ JFrame. Tôi muốn thêm JFreeChart vào JFrame.Cách hiển thị JFreeChart trong dự án NetBeans
public class MyClass extends javax.swing.JFrame implements TableModelListener {
public MyClass() {
initComponents();
...
updateChart();
}
private void updateChart() {
XYDataset dataset = createXYdataset();
JFreeChart chart = createChart(dataset);
JPanel chartPanel = new ChartPanel(chart);
setContentPane(chartPanel);
}
private XYDataset createXYdataset() {
XYSeries series = new XYSeries("");
int rows = jTable.getRowCount();
if (rows > 0) {
int ms = 0;
for (int row = 0; row < rows; row++) {
series.add(ms, 1);
ms += Integer.parseInt(
jTable.getValueAt(row, PULSE_ON).toString());
series.add(ms, 1);
series.add(ms, 0);
ms += Integer.parseInt(
jTable.getValueAt(row, PULSE_OFF).toString());
series.add(ms, 0);
}
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
return dataset;
}
private JFreeChart createChart(XYDataset dataset) {
JFreeChart chart = ChartFactory.createXYLineChart(
null, // chart title
"ms", // x axis label
null, // y axis label
dataset, // data
PlotOrientation.VERTICAL,
false, // include legend
true, // tooltips
false // urls
);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setDomainPannable(true);
plot.setRangePannable(true);
plot.setRangeGridlinesVisible(false);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
return chart;
}
}
đang Corrected:
private void updateChart() {
XYDataset dataset = createXYdataset();
JFreeChart chart = createChart(dataset);
JPanel chartPanel = new ChartPanel(chart);
chartPanel.setSize(jPanel1.getSize());
jPanel1.add(chartPanel);
jPanel1.getParent().validate();
}
IDE NetBeans dường như đang sử dụng GroupLayout cho Trình quản lý bố cục. Tôi đã thêm một JPanel gọi là jPanel1 vào dự án và 'jPanel1.add (chartPanel); jPanel1.getParent(). validate(); và jPanel1.setVisible (true); 'to' updateChart() 'nhưng biểu đồ không hiển thị trong jPanel1. Bất kỳ ý tưởng nào khác? – jacknad
GroupLayout yêu cầu sử dụng các ràng buộc mà tôi không biết gì về. Tôi đoán vấn đề là bảng điều khiển trống có kích thước 0 được ưa thích nên các đường viền không được đặt đúng để thêm thành phần khác vào nó. Tôi luôn xây dựng bố cục GUI bằng tay để tôi có toàn quyền kiểm soát bố cục. Vì vậy, đề xuất của tôi sẽ là tìm hiểu cách sử dụng trình quản lý bố cục và tự viết mã thì bạn không phụ thuộc vào IDE. – camickr
Cảm ơn một triệu đầu mối. Tất cả những gì cần thiết là một 'chartPanel.setSize (jPanel1.getSize());'. – jacknad