gpt4 book ai didi

java - NetBeans JButton 中的 JFreeChart 拨号

转载 作者:行者123 更新时间:2023-11-30 08:51:09 27 4
gpt4 key购买 nike

当我按下 NetBeans 制作的 JButton 时,我正在尝试使 JFreeChart 的拨号工作。问题是,虽然代码在 JButton 之外看起来没问题,但当我将它放入其中时,它会给我带来程序错误。

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here
}

public class DemoChartProblem {

private final DefaultValueDataset dataset = new DefaultValueDataset(50);
private final JFrame frame = new JFrame();

public void main(String[] args) throws Exception {
new DemoChartProblem();
}

public DemoChartProblem() {
frame.setPreferredSize(new Dimension(300, 300));
frame.add(buildDialPlot(0, 30, 5));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame.setVisible(true);
}
});
}

private ChartPanel buildDialPlot(int minimumValue, int maximumValue,
int majorTickGap) {

DialPlot plot = new DialPlot(dataset);
plot.setDialFrame(new StandardDialFrame());
plot.addLayer(new DialValueIndicator(0));
plot.addLayer(new DialPointer.Pointer());

StandardDialScale scale = new StandardDialScale(minimumValue,
maximumValue, -120, -300, majorTickGap, majorTickGap - 1);
scale.setTickRadius(0.88);
scale.setTickLabelOffset(0.20);
plot.addScale(0, scale);

return new ChartPanel(new JFreeChart(plot));
}
}

我想这是显而易见的事情,但我似乎没有找到问题所在;任何帮助表示赞赏。

最佳答案

您的示例中有几个问题值得关注:

  • 使用 Action封装功能;此示例在每次调用时递增 dataset 值。

    frame.add(new JButton(new AbstractAction("Update") {

    @Override
    public void actionPerformed(ActionEvent e) {
    dataset.setValue(dataset.getValue().intValue() + 1);
    }
    }), BorderLayout.SOUTH);
  • main() 方法必须是static

  • Swing GUI 对象应该event dispatch thread 上构造和操作.

  • 考虑这些 alternate ways控制初始图表大小。

image

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.dial.DialPlot;
import org.jfree.chart.plot.dial.DialPointer;
import org.jfree.chart.plot.dial.DialValueIndicator;
import org.jfree.chart.plot.dial.StandardDialFrame;
import org.jfree.chart.plot.dial.StandardDialScale;
import org.jfree.data.general.DefaultValueDataset;

public class DemoChartProblem {

private final DefaultValueDataset dataset = new DefaultValueDataset(41);
private final JFrame frame = new JFrame();

public static void main(String[] args) throws Exception {
EventQueue.invokeLater(() -> {
new DemoChartProblem();
});
}

public DemoChartProblem() {
frame.add(buildDialPlot(0, 30, 5));
frame.add(new JButton(new AbstractAction("Update") {

@Override
public void actionPerformed(ActionEvent e) {
dataset.setValue(dataset.getValue().intValue() + 1);
}
}), BorderLayout.SOUTH);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}

private ChartPanel buildDialPlot(int minimumValue, int maximumValue,
int majorTickGap) {

DialPlot plot = new DialPlot(dataset);
plot.setDialFrame(new StandardDialFrame());
plot.addLayer(new DialValueIndicator(0));
plot.addLayer(new DialPointer.Pointer());

StandardDialScale scale = new StandardDialScale(minimumValue,
maximumValue, -120, -300, majorTickGap, majorTickGap - 1);
scale.setTickRadius(0.88);
scale.setTickLabelOffset(0.20);
plot.addScale(0, scale);

return new ChartPanel(new JFreeChart(plot)) {

@Override
public Dimension getPreferredSize() {
return new Dimension(300, 300);
}
};
}
}

关于java - NetBeans JButton 中的 JFreeChart 拨号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com