我正在用java编写一个包含GUI的科学实验控制程序.
我帮助为此任务选择图表库.该程序将包含两种类型的图表:
具有大量数据点的折线图(在每个图中10 ^ 4-10 ^ 5点的范围内),刷新率大约每0.5-1秒一次,因此性能是一个因素.此图表必须包含具有不同缩放比例的数据点集.
没有许多数据点的散点图必须包含错误条,或某种方式指示点中的错误.优选地,在X轴和Y轴上,例如以十字线形式.
对数刻度也是必须的,一个好的缩放工具和导出工具也会很好.我更倾向于使用单个包可能的两个图表的解决方案.
从研究中我做了一个近乎完美的选择似乎是javaFX 2.0.从我读到的,它具有良好的性能,也看起来很棒,但我似乎找不到错误栏的选项.由于我根本不了解javaFX,扩展图表库以包含错误栏是多么简单,或者是否包含我未找到的包含此内容的开源添加?
另一种选择是Google图表库,它似乎具有所有必要的功能,但是我担心刷新率在第一种图表类型中会出现问题.这是一个可行的问题吗?
我使用过JFreeChart,但我对性能感到担忧,并且发现添加小的更改非常困难.这些包括在matlab创建图表后在运行时更改绘制点的颜色的方法.所有这些都需要大量额外的编码和时间消耗,我试图避免.
最实用的最后一个选项是JChart2D.它似乎拥有我需要的大多数功能,而我唯一的问题是它看起来不太好.
有人对我有任何建议吗?我计划在尽可能短的时间内对此进行编码,最糟糕的情况是我发现某些第三方软件包中的错误或我需要的选项不可用并且需要大量额外的代码,尽管它会是很高兴学到新东西.
这个决定当然可能影响我选择使用的整个GUI包,目前看来是Swing.
谢谢,
我正在使用NET Beans IDE在LINUX中开发我的应用程序.我使用synthetica包来产生新的外观和感觉.一直都很好.
现在我的下一个阶段是在某些数据库状态发生变化时为按钮添加颜色.
例如:
在一家餐馆,我有2张桌子,当有8个人进来用餐时,我将在我的软件中创建2个桌子,因为人们无人看管我希望这两个桌子的按钮是绿色的.处理任何这些表的订单时,处理表的按钮颜色应更改为橙色.处理时,它应该是闪烁的颜色.如何在java中执行此操作?我将负责数据库更新我只想知道如何更改按钮的颜色和添加闪烁技术.
我JFreeChart用来绘制图表.代码是
package com.daya;
import java.awt.Color;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
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.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class Two extends ApplicationFrame {
public Two(final String title) {
super(title);
final XYDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(1200, 1100));
setContentPane(chartPanel);
}
private XYDataset createDataset() {
final XYSeries series1 = new XYSeries("SLMM");
final XYSeries …Run Code Online (Sandbox Code Playgroud) 我只想在我的图表上显示数据点,我该怎么做?该图显示为线图,但我希望每个数据点都有小标记.
该应用程序的JFreeChart部分是:
private XYDataset createDataset() {
final TimeSeries inclinometerAngles = new TimeSeries(TimeUnit.SECONDS);
// Add all data from the map to the dataset
final Set<Date> keys = data.keySet();
for (Date date : keys) {
Record r = data.get(date);
if (r.mcInclinometerAngle != null) {
inclinometerAngles.add(new Second(date), r.mcInclinometerAngle);
}
}
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(inclinometerAngles);
return dataset;
}
private void setupGraphics() {
final XYDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); …Run Code Online (Sandbox Code Playgroud) 很难描述我想要做的事情.我基本上想要创建一个离散的彩虹渐变,这样对于i个JButton的任何一行,它们之间的颜色渐变看起来都是彩虹.
我做了以下但是它只创建了一个红色渐变,然后是绿色渐变,然后是蓝色渐变:
Color[] c = new Color[i];
for(int n = 0; n < i; n++) {
if(n < i/3) {
c[n] = new Color(255, 255/(n+1), 255/(n+1));
} else if(n < 2*i/3) {
c[n] = new Color(255/(n-(i/3)), 255, 255/(n-(i/3)));
} else {
c[n] = new Color(255/(n+1), 255/(n+1), 255);
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法我怎么能得到某种类型的彩虹效果?
谢谢
编辑:
使用Sine函数似乎工作稍好,但不知道如何定义它所以我得到一个"彩虹波"在我想要的区域:
for(int n = 0; n < i; n++) {
c[n] = new Color((int)(Math.sin(n) * 127 + 128), (int)(Math.sin(n + Math.PI/2) * 127 + 128), (int)(Math.sin(n + Math.PI) …Run Code Online (Sandbox Code Playgroud) 我正在创建一些我希望从一种颜色淡化到另一种颜色的自定义Swing组件.目前我正在从RGB转换为HSB,然后通过Hue值递增并在绘画之前转换回RGB,工作正常.
然而,这会循环所有颜色(即尝试从蓝色渐变为绿色循环,通过黄色,橙色,红色等).是否有一种不错的算法/方法可以直接从一种颜色淡入另一种颜色?
编辑:我已经通过Swing Timer对其进行了更新(我尝试避免使用像瘟疫这样的线程来触摸组件).今天晚上我会和你的建议一起去,谢谢!
第一次在这里发帖 这个编程任务让我难过,代码如下:
import java.awt.*;
import javax.swing.*;
public class HTree extends JPanel {
private Color color = new Color((int)(Math.random() * 256), (int)(Math.random() * 256), (int)(Math.random() * 256));
public void draw(Graphics g, int n, double sz, double x, double y) {
if (n == 0) return;
double x0 = x - sz/2, x1 = x + sz/2;
double y0 = y - sz/2, y1 = y + sz/2;
// draw the 3 line segments of the H
g.setColor(color);
g.drawLine((int)x0, (int)y, (int)x1, (int)y); …Run Code Online (Sandbox Code Playgroud) 我需要更改甘特图中子任务的颜色。我的示例基于GanttDemo2以下数据集和渲染器。在不同的论坛中,我发现了一些与该主题相关的讨论,但我没有找到清晰简单的工作示例。特别是,我可以更改任务的颜色,但我不知道如何提取子任务。
private IntervalCategoryDataset createSampleDataset() {
final TaskSeries s1 = new TaskSeries("Scheduled");
final Task t1 = new Task(
"Design", date(1, Calendar.APRIL, 2001), date(1, Calendar.MAY, 2001));
t1.addSubtask(new Task("Design 1", date(1, Calendar.APRIL, 2001), date(15, Calendar.APRIL, 2001)));
t1.addSubtask(new Task("Design 2", date(16, Calendar.APRIL, 2001), date(25, Calendar.APRIL, 2001)));
t1.addSubtask(new Task("Design 3", date(26, Calendar.APRIL, 2001), date(1, Calendar.MAY, 2001)));
s1.add(t1);
final Task t2 = new Task(
"Proposal", date(1, Calendar.JUNE, 2001), date(1, Calendar.JULY, 2001));
t2.addSubtask(new Task("Proposal 1", date(1, Calendar.JUNE, 2001), date(15, Calendar.JUNE, 2001)));
t2.addSubtask(new …Run Code Online (Sandbox Code Playgroud) 我创建了折线图:

但我想让它看起来像这样.我也不知道这是什么样的图表.我想在其中制作阴影和圆圈节点.像这样:

我怎样才能做到这一点?顺便说一句,PNG如果它与我的问题相关,我会将网页中的图表显示为图像格式.提前致谢.