Combobox 组合框选择
我有一个图表,以3种颜色(红、绿、蓝)显示线条,如屏幕截图 当我按下其中一种颜色,即红色时,我只想用红色显示图形。如果我按绿色,那么只有绿色。但如果我什么都不按,那么它应该显示所有内容 下面是我创建和绘制线条的代码Combobox 组合框选择,combobox,jfreechart,Combobox,Jfreechart,我有一个图表,以3种颜色(红、绿、蓝)显示线条,如屏幕截图 当我按下其中一种颜色,即红色时,我只想用红色显示图形。如果我按绿色,那么只有绿色。但如果我什么都不按,那么它应该显示所有内容 下面是我创建和绘制线条的代码 import java.awt.Color; import java.io.FileInputStream; import javax.swing.JOptionPane; import javax.swing.JScrollBar; import javax.swing.Swin
import java.awt.Color;
import java.io.FileInputStream;
import javax.swing.JOptionPane;
import javax.swing.JScrollBar;
import javax.swing.SwingConstants;
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
class LineGraph extends ApplicationFrame {
private JFreeChart createChart(final XYDataset dataset) {
// Graph wird erstellt...
final JFreeChart chart = ChartFactory.createXYLineChart("","X","Y",dataset,PlotOrientation.VERTICAL,true,false,false);
final XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
NumberAxis xAxis = (NumberAxis) plot.getRangeAxis();
xAxis.setRange (0, 7500);
NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();
yAxis.setRange(0, 270);
return chart;
}
public LineGraph(final String title) {
super(title);
}
public ChartPanel createPanel(final String title){
final XYDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(950, 570));
//chartPanel.setSize(50, 50);
//setContentPane(chartPanel);
return chartPanel;
}
private XYSeriesCollection createDataset() {
try {
final int pictureWidth = 7500;
final int pictureHeight = 5;
int pictureArray[] = new int[pictureWidth * pictureHeight];
int pixArray[] = new int[pictureWidth];
int R, G, B, U;
int averageX, averageY;
FileInputStream inp = new FileInputStream("d:\\DO_18-02-2014_19-59-05-756_00010.img");
int k = 0;
XYSeries RED = new XYSeries("R");
XYSeries GREEN = new XYSeries("G");
XYSeries BLUE = new XYSeries("B");
XYSeries UNDEFINED = new XYSeries("U");
for (int j = 0; j < pictureHeight; j++)
{for (int i = 0; i < pictureWidth; i++)
{ R = inp.read();
G = inp.read();
B = inp.read();
U = inp.read();
Color c = new Color(R, G, B, U);
pictureArray[k++] = c.getRGB();
System.out.println((new Integer(i)).toString()+" "+(new Integer(j)).toString());
RED.add(i, R);
GREEN.add(i, B);
BLUE.add(i, G);
UNDEFINED.add(i, U);
}
}
inp.close();
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(RED);
dataset.addSeries(GREEN);
dataset.addSeries(BLUE);
dataset.addSeries(UNDEFINED);
return dataset;
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, e, "Exception Raised",
JOptionPane.INFORMATION_MESSAGE);
return null;
}
}
}
如图所示,可以使用渲染器的setSeriesVisible()
方法控制单个系列的可见性。引用的示例使用复选框进行控制,但是您的组合的动作侦听器可以调用相同的方法。使用XYLineAndShapeRenderer的实例;您可以从图表的绘图中获取参考,如图所示
你能提供一个链接到你的屏幕截图吗?谢谢。您还可以给我一些提示,如何将其放入我的代码中吗?
setSeriesVisible()
调用进入您组合的动作侦听器;请编辑您的问题,以包括一个显示您修改过的方法;在您的示例中,通过URL
访问发布的图像,如图所示;如图所示使用合成图像;或者使用UIManager
图标,如图所示..Thx作为提示。但是我仍然不知道如何在代码中实现setSeriesVisible()。你能帮忙吗。我真的需要你的帮助。我不知道你被困在哪里了。请编辑您的问题,使其包含显示您当前方法的代码。对不起,我如何在此处放置进一步的代码?我已经把我的代码放在这个查询的上面了。
![//Create ComboBox for RGB Choice
String ChannelStrings\[\] = { "All", "Red", "Green", "Blue"};
JComboBox ChannelChoice = new JComboBox(ChannelStrings);
ChannelChoice.setFont((new Font ("Arial", Font.BOLD, 13)));
panelButton.add(ChannelChoice);][1]