我希望能够选择要显示的系列。例如,只有在0°和20°人。是否有一种简单的方法可以通过不使用图表来操作图表JCheckBox?我希望能够做到这一点,例如,通过单击该系列的图例。
如所示在这里,JCheckBox是更灵活,但直接点击在图表上可能更方便。下面的示例添加了一个 ,当单击 序列中的或其时,该序列将不可见。 当然,一旦一个系列不可见,就不能再次单击它。您将需要一种恢复可见性的方法。在一些替代方案中,第一种方案 如下所示:
ChartMouseListener
XYItemEntity
LegendItemEntity
单击图表上的其他位置,可恢复所有系列的可见性。
将此与上面引用的方法结合起来,JCheckBox在实现时相应地进行切换chartMouseClicked()
。
在按钮处理程序中循环浏览系列,以恢复每个系列的可见性。
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import org.jfree.chart.ChartMouseEvent;
import org.jfree.chart.ChartMouseListener;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.entity.ChartEntity;
import org.jfree.chart.entity.LegendItemEntity;
import org.jfree.chart.entity.XYItemEntity;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
/** @see https://stackoverflow.com/a/43286042/230513 */
public class VisibleTest {
private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
XYSeriesCollection dataset = new XYSeriesCollection();
for (int i = 0; i < 3; i++) {
XYSeries series = new XYSeries("value" + i);
for (double t = 0; t < 2 * Math.PI; t += 0.5) {
series.add(t, Math.sin(t) + i);
}
dataset.addSeries(series);
}
NumberAxis xAxis = new NumberAxis("domain");
NumberAxis yAxis = new NumberAxis("range");
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, true);
renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
JFreeChart chart = new JFreeChart("Test", plot);
ChartPanel chartPanel = new ChartPanel(chart) {
@Override
public Dimension getPreferredSize() {
return new Dimension(640, 480);
}
};
chartPanel.addChartMouseListener(new ChartMouseListener() {
@Override
public void chartMouseClicked(ChartMouseEvent e) {
ChartEntity ce = e.getEntity();
if (ce instanceof XYItemEntity) {
XYItemEntity item = (XYItemEntity) ce;
renderer.setSeriesVisible(item.getSeriesIndex(), false);
} else if (ce instanceof LegendItemEntity) {
LegendItemEntity item = (LegendItemEntity) ce;
Comparable key = item.getSeriesKey();
renderer.setSeriesVisible(dataset.getSeriesIndex(key), false);
} else {
for (int i = 0; i < dataset.getSeriesCount(); i++) {
renderer.setSeriesVisible(i, true);
}
}
}
@Override
public void chartMouseMoved(ChartMouseEvent e) {}
});
f.add(chartPanel);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new VisibleTest()::display);
}
}
Jenkins想添加一个参数。列表是固定的,但我希望dropbox显示自定义值,而不是实际值(类似于网页的名称,而不是其URL)。 在某些情况下,这是文件,但是,我想显示模块名,而不是完整路径。举个例子: 感谢您的帮助提前!
问题内容: models.py: views.py: 在模板上,当我调用时,我得到而不是。 如何显示值(或)而不是代码()? 问题答案: 看来你走在正确的轨道上- 无疑是你想要的: 在模板中,你不包括方法名称。请执行下列操作:
问题内容: 好的,一段时间以来,我一直在寻找答案,但我遇到的所有问题(甚至在搜索javascript时)都与jQuery结合在一起!没人再使用普通的javascript吗?!? 因此,我想要一个下拉列表(使用多个选项进行选择)。选择某个选项后,我希望显示一个隐藏的div。 然后,我尝试使用以下JavaScript代码: 我猜我的问题出在选项中的onClick触发器上,但是我不确定还有什么用?或者,
我正在创建具有下拉列表视图的页面。现在我在列表视图中显示完整数据。如果我想要任何特定的日期数据,那么我需要做什么。请帮我解决这个问题。下面是我正在获取的JSON。 下面是代码
我有一个带有自定义适配器的 GridView,当我从列表中选择一个项目时,选择器会显示一秒钟并消失。我猜自定义适配器会导致它,我尝试使用它和选择器,但无济于事。 下面是我的适配器(基于“Hello,Views”中的网格视图示例): 布局是这样的: 谢谢你的帮助。 下面是GridView的一个截图(现在,所有的条目都有相同的图片)。我想在选中的图像周围画一个某种颜色的框,但是我得到一个橙色的矩形,一
问题内容: 我用。字段之一是: 我需要更改其显示类型。我不想在显示中使用(或在Python 2中),而是要显示曲目的名称和日期。 我该怎么做? 问题答案: 子类并重写以返回曲目名称和日期。然后在中使用新字段。