框架内的JAVA按钮生成图表

时间:2016-10-11 11:54:40

标签: java swing button charts frame

这是我在这里的第一篇文章,但绝望的时候需要绝望的举动。我的问题是我用按钮创建了一个JFrame,其他按钮显示了我的项目(每个下一个按钮显示单击前一个按钮时(代码包含如果 else )。当点击倒数第二个按钮(最后一个 else )时,它会完成项目的最后一部分并显示,让我们调用它,"创建图表&#34 ;按钮。我想要做的是在点击此按钮后显示新框架,该按钮将在新框架中显示图表。这是我的代码(缩短和简化以显示想法):

public class clazz extends JFrame
{
    static JButton // my buttons
    static JLabel //my labels
    static JCheckBox // my checkBoxes
    static JTextField // my textfields

    public double //declaration of my variables

    public clazz()
    {
        setSize(1600,900);
        setTitle("Project");
        setLayout(null);

        // created and set up lots of buttons/labels/textfields etc.

        button1.addActionListener(new ActionListener() { 
          public void actionPerformed(ActionEvent e) { 
            Button1();}});  

         button2.addActionListener(new ActionListener() { 
          public void actionPerformed(ActionEvent e) { 
            Button2();}});  


         // and it continues like that

     }

public void Button1()
{
    //sth
}
public void Button2()
{
    //sth
}

// and continues like that



public static void main(String[] args) 
{
    clazz aplication = new clazz();
    aplication.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    aplication.setVisible(true);    
}
} 

出于我的问题的目的,让我们说button3将是创建图表的那个(在另一个框架中)。如何根据之前按钮生成的数据获取带有图表的新框架。我看到的所有其他主题都使用一个新的类来做图表,那些不是为我复杂的(我是一条鱼)。

感谢您的帮助!

修改

完成它!如果您了解我感兴趣的更简单的方式。

// the beginning is the same

// to the last button in the constructor (let's say the third one) I've added method chartt()

// here's the method chartt()
 public void chartt() {
        JFrame frame = new JFrame();

        XYSeries DATA = new XYSeries("");
        matrix1 = new double[641];
        matrix2 = new double[641];
        for (int x=0; x<=640; x++)
        {
            matrix1[x]= pressure(x*1000);  //pressure is defined in another method with argument x
            matrix2[x] = x;
        }

        for (int y=0;y<=640;y++)
        {
            DATA.add(matrix2[y], matrix1[y]); 
        }


        XYDataset xyDataset = new XYSeriesCollection(DATA);
        JFreeChart chart = ChartFactory.createXYLineChart(
        "", "", "",
        xyDataset, PlotOrientation.VERTICAL, true, true, false);

        ChartPanel cp = new ChartPanel(chart) 
        {


            public Dimension getPreferredSize() 
            {
                return new Dimension(600, 600);
            }
        };

        cp.setMouseWheelEnabled(true);
        add(cp);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        frame.add(cp);
        frame.setVisible(true);

    }

祝大家好运!

1 个答案:

答案 0 :(得分:0)

我从你的问题中得到的是,当你点击最后一个按钮时,另一个JFrame(可能你已经设计过它)让我们知道必须显示XYZ。 XYZ将包含由您设计的图表。

所以在ActionPerformed事件中你需要编写以下代码:

XYZ x = new XYZ();
x.setVisible(true);
this.dispose();   // use this line if you wish to close the first frame with buttons.

希望它有所帮助。如果您还有其他问题,请在评论中提及。