如何在java中创建图形窗口

时间:2012-03-02 14:13:26

标签: java netbeans graph jfreechart

我正在使用此代码

private void botaoGrafADMouseClicked(java.awt.event.MouseEvent evt) {
    try {
        boolean[] b=new boolean[8];
        if (Caixa9.isSelected()) b[0]=true; else b[0]=false;
        if (Caixa11.isSelected()) b[1]=true; else b[1]=false;
        if (Caixa10.isSelected()) b[2]=true; else b[2]=false;
        if (Caixa12.isSelected()) b[3]=true; else b[3]=false;
        b[4]=false;b[5]=false;b[6]=false;b[7]=false;
        final LineChartDemo1 demo = new LineChartDemo1("Leitura A/D",b,"outad.txt",4);
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    } catch (IOException ex) {
        Logger.getLogger(Comunicacao.class.getName()).log(Level.SEVERE, null, ex);
    }       
}

调用图形界面。但是,当我这样做时,每次调用图形时,它都会在新窗口中生成,如果我关闭这些窗口,整个程序就会关闭。 我想知道我做错了什么。我怎么能避免这种情况(我会发布一个版画屏幕,但是,作为新用户,我不能,它是http://i.stack.imgur.com/4JLxQ.png我认为

编辑:图片 enter image description here

3 个答案:

答案 0 :(得分:1)

JFrame具有EXIT_ON_CLOSE的默认关闭操作(即使用窗口管理器关闭窗口时会发生什么)。使用JFrame.setDefaultCloseOperation设置不同的值。

答案 1 :(得分:1)

我不知道班级LineChartDemo1是什么,但您可以将其设置为JDialog的内容,并在每个对话框上调用setDefaultCloseOperation (JDialog.DISPOSE_ON_CLOSE)。这样,当用户关闭对话框时,只有该窗口关闭,其他窗口将保持打开状态。

答案 2 :(得分:0)

我创建了一个新的netbeans JFrame并像这样引用它:

InterfaceGrafico minhaInterface = new InterfaceGrafico("Leitura I/O",b,"outio.txt",8);

其中参数的位置相同,以生成图形。在这个“InterfaceGrafico”课程中:

public InterfaceGrafico(final String title,boolean[] b, String nomeArquivo, int col) {
try {
        initComponents();
        final LineChartDemo1 demo = new LineChartDemo1("Leitura I/O", b, "outio.txt", 8);
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    } catch (IOException ex) {
        Logger.getLogger(InterfaceGrafico.class.getName()).log(Level.SEVERE, null, ex);
    }

}

这意味着,我只是将代码转移到了另一个JFrame。我还评论了public void run方法。现在我可以关闭生成的每个图形而不关闭整个应用程序和其他生成的图形。在“LineChart1”类中,我添加了这个

public void windowClosing(final WindowEvent evt){
    if(evt.getWindow() == this){
    dispose();
    }
}