我正在开发一个程序,该程序应显示某些数据的图形,并且需要使用GNUplot。我决定选择JavaPlot library,因为它是GNUplot作者的推荐。
我决定使用Swing,并创建一个表单,该表单将同时包含图形和图形的代码/脚本。 Picture of the form“ DisplayPannel”应包含图形,脚本应包含“ textPane1”。
由于我是Swing(和JavaPlot)的新手,所以我无法解决将JPlot分配给DisplayPannel的问题,该JPlot应该是绘制图形的组件,我希望在其中绘制图形。我看到很多人都在解决类似的问题,但是他们总是将图表绘制成完整的形式,而不仅仅是部分形式。
以下是格式的代码:
import com.panayotis.gnuplot.JavaPlot;
import com.panayotis.gnuplot.swing.JPlot;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.event.*;
import java.util.Properties;
public class IS {
private JProgressBar progressBar1;
private JSlider slider1;
private JButton button1;
private JPanel main;
private JTextPane textPane1;
private JPanel Displaypannel;
public IS() {
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
progressBar1.setValue(slider1.getValue());
}
});
slider1.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
progressBar1.setValue(slider1.getValue());
}
});
}
public static Properties readProperties(){
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("./prop/config.properties");
prop.load(input);
}catch (IOException io) {
io.printStackTrace();
} finally {
if (input != null) {
try { input.close();
} catch (IOException e) {
e.printStackTrace();
}
}else
return null;
}
return prop;
}
public static void writeProperties(Properties prop) //get GNUplot path
{
OutputStream output = null;
try {
output = new FileOutputStream("./prop/config.properties");
} catch (IOException io) {
io.printStackTrace();
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void init() {
Properties prop = null;
prop = readProperties();
JPlot plot = new JPlot(new JavaPlot(prop.getProperty("gnuplotpath")));
plot.getJavaPlot().addPlot("sqrt(x)/x");
plot.getJavaPlot().addPlot("x*sin(x)");
plot.plot();
JFrame frame = new JFrame("IS");
frame.setContentPane(new IS().main);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//this is what i dont know how to do:
Displaypannel.add(plot);
frame.pack();
frame.setVisible(true);
writeProperties(prop);
}
}
这是主要代码:
public class bootup {
public static void main(String[] args) {
IS form = new IS();
form.init();
}
}
希望您能理解,并感谢您提前答复:)。