我只想插入一个图表(由Graphique
类创建)到另一个类的面板中(此处为TabFrame)。我正在使用NetBeans。所以,我创建了一个类Graphique
,如您所见:
public class Graphique extends JPanel {
public Graphique(double cpm1, int temps1, double cpm2,
double temps2, double cpm3, double temps3, double cpm4,
double temps4) {
final XYDataset dataset = createDataset(cpm1, temps1,
cpm2, temps2, cpm3, temps4, cpm4,
temps4);
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
add(chartPanel);
final XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesLinesVisible(1, false);
renderer.setSeriesShapesVisible(1, false);
plot.setRenderer(renderer);
}
public XYDataset createDataset(double cpm1, int temps1, double cpm2,
double temps2, double cpm3, double temps3, double cpm4,
double temps4) {
final XYSeries series1 = new XYSeries("log cpm net");
series1.add(temps1, cpm1);
series1.add(temps2, cpm2);
series1.add(temps3, cpm3);
series1.add(temps4, cpm4);
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
return dataset;
}
private JFreeChart createChart(final XYDataset dataset) {
final JFreeChart chart = ChartFactory.createXYLineChart("log Chart", // chart
// title
"temps", // x axis label
"log CPM", // y axis label
dataset, // data
PlotOrientation.VERTICAL, true, // include legend
true, // tooltips
false // urls
);
return chart;
}
}
下一步是将Graphique类创建的图表集成到另一个名为此处TabFrame
的类中的面板(由于netbeans的GUI界面已经声明)中:
JPanel cp = new Graphique(Math.log(CMP1corBis), tempsCumule1, Math.log(CMP2corBis),
tempsCumule2,Math.log(CMP3corBis), tempsCumule3,Math.log(CMP4corBis), tempsCumule4);
PanelGraphique1.add(cp);
为什么这不起作用?
使用替代数据,图表显示如下所示;问题可能出在您提供的参数中,或者忽略了所包含的窗口的
pack()
。另外,考虑此处讨论的原因,重写<代码> GETAPYRESSIZE()<代码>。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
/**
* @see https://stackoverflow.com/a/25047904/230513
*/
public class Test {
private class Graphique extends JPanel {
public Graphique() {
final XYDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart){
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 270);
}
};
add(chartPanel);
final XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesLinesVisible(1, false);
renderer.setSeriesShapesVisible(1, false);
plot.setRenderer(renderer);
}
private XYDataset createDataset() {
final XYSeries series1 = new XYSeries("log cpm net");
series1.add(1, 10);
series1.add(2, 20);
series1.add(3, 30);
series1.add(4, 40);
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
return dataset;
}
private JFreeChart createChart(final XYDataset dataset) {
final JFreeChart chart = ChartFactory.createXYLineChart("log Chart",
"temps", // x axis label
"log CPM", // y axis label
dataset, // data
PlotOrientation.VERTICAL, true, // include legend
true, // tooltips
false // urls
);
return chart;
}
}
private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new Graphique());
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
new Test().display();
});
}
}
您没有为Graphique
面板指定LayoutManager
,因此当您将ChartPanel
添加为子组件时,它很可能不会定位或调整大小,因此您不会看到任何图表。
问题内容: 我在golang中有一个模板,其中有一个看起来像这样的字符串: 我期望输出是这样的: 但是我看到的是这样的: 我还尝试插入一些JSON,但golang会转义字符并在不应该出现的地方添加类似内容。 如何在golang中插入HTML模板而不发生这种情况? 问题答案: 您应该将变量作为a 而不是作为a 传递: https://play.golang.org/p/QKKpQJ7gIs 如您所见
我正在构建一个Java程序。该程序的核心在JFrame中可视化,其中包含一个JMenuBar和各种JMenuItem和JMenu。关键是我在所有框架中添加了一个centralPanel,但是如果我在centralPanel中添加了一些内容,那么只有在调整主框架的大小、缩小或放大它时,它才会显示出来!代码如下: 这是构造函数: 在这里,我添加了中央面板,在这里,在ActionListener中,我试
问题内容: 我想将Follium Map插入到Jinja模板中。 运行 template / index.html -Flask的Jinja模板 我的网站显示当前行: 但是我需要在此div块中生成方法follium_map.save(’map.html’)的地图。 我怎样才能做到这一点? 问题答案: 你可以使用来保存生成的。然后,你可以使用jinja2来。如所示将生成的html包裹在div标签中时
问题内容: 我有一个非常基本的模板(basic_template.html),并希望使用使用另一部分模板格式化的数据来填写。basic_template.html可能包含使用部分模板格式化的几件事。 我应该如何在views.py中构建代码? 我这样做的原因是稍后将使用Ajax填充。我这样做对吗? 问题答案: 你可以做: 另一个Django模板在哪里。在这里,你可以放入将用Ajax获得的HTML。
问题描述:我有一个JFrame,在这个JFrame中有一个带按钮的JPanel,当我按下按钮时,一个动作监听器会用一个新的JPanel来更改当前的JPanel,其中包含另外两个JPanel,这两个JPanel都有一个inputMap,当用户按下“up”键时,这两个JPanel都会生成一些东西。问题是:当我用新的JPanel更改JPanel时,“up”键不会起任何作用。 下面是代码:是一个SSCCE
我想使用PHP将大的xml值插入到sql中。 我可以用PHP做这个工作吗?我该怎么做呢? 谢谢