Как создать графическое окно в Java - PullRequest
0 голосов
/ 02 марта 2012

Я использую этот код

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 ]

1 голос
/ 02 марта 2012

Я не знаю, что такое класс LineChartDemo1, но вы, вероятно, могли бы установить его как содержимое JDialog и вызывать setDefaultCloseOperation (JDialog.DISPOSE_ON_CLOSE) в каждом диалоге. Таким образом, когда пользователь закрывает диалоговое окно, закрывается только это окно, остальные остаются открытыми.

1 голос
/ 02 марта 2012

JFrame имеет операцию закрытия по умолчанию (т. Е. Что происходит, когда вы закрываете окно с помощью вашего оконного менеджера) EXIT_ON_CLOSE.Используйте JFrame.setDefaultCloseOperation , чтобы установить другое значение.

0 голосов
/ 05 марта 2012

Я создал новый JBrame для NetBeans и сделал ссылку на него следующим образом:

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. Я также прокомментировал публичный метод void run. Теперь я могу закрыть каждый сгенерированный график без закрытия всего приложения и других сгенерированных графиков. В классе "LineChart1" я добавил это

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