将JPlot(来自JavaPlot库)绘制为特定的JPane

时间:2018-10-19 17:04:10

标签: java javaplot

我正在开发一个程序,该程序应显示某些数据的图形,并且需要使用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();
    }

}

希望您能理解,并感谢您提前答复:)。

0 个答案:

没有答案