Note that there are some explanatory texts on larger screens.

plurals
  1. POwindow not closing on dispose() call
    text
    copied!<p>Below is my code.</p> <p>It displays one table containing all daily sells, 3 buttons (next, previous, print). When we press next button date advances and next day sell will display in another window. Now here is the main problem - I want that when new window will open the first window should be closed. Can someone help me sort out this problem?</p> <pre><code>package shop; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.print.PrinterException; import java.text.SimpleDateFormat; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.table.DefaultTableModel; import shop.DBEngine; public class AllCashTable extends JFrame implements ActionListener{ private static String name; private Vector&lt;Vector&lt;String&gt;&gt; data; private Vector&lt;Vector&lt;String&gt;&gt; data1; private Vector&lt;String&gt; header; private Vector&lt;String&gt; header1; JButton next,previous,print; int a=0,d=0,y=0,m=0; JTable table; private JPanel mainPanel = new JPanel(); private String date,month,year; String gt; private String newdate; private static JFrame frame,frame1,frame2; public AllCashTable(String name) throws Exception{ DBEngine dbengine = new DBEngine(); data = dbengine.getDailySellAdd(name); header = new Vector&lt;String&gt;(); header.add("Date"); header.add("Cash"); next=new JButton("Next"); previous=new JButton("Previous"); print=new JButton("Print"); table = new JTable(data, header); table.setRowHeight(40); table.setSelectionBackground(Color.YELLOW); JPanel viewPanel = new JPanel(); viewPanel.setLayout(new BorderLayout()); viewPanel.add(table,BorderLayout.CENTER); JScrollPane scroll = new JScrollPane(viewPanel); scroll.setColumnHeaderView(table.getTableHeader()); mainPanel.setLayout(new BorderLayout()); mainPanel.setBorder(BorderFactory.createEtchedBorder()); mainPanel.add(scroll,BorderLayout.CENTER); for(int i=0;i&lt;table.getRowCount();i++){ a=a+Integer.parseInt(data.get(i).get(1)); } gt=Integer.toString(a); header1 = new Vector&lt;String&gt;(); header1.add("Total"); header1.add(gt); data.setSize(table.getRowCount()+1); data.set(table.getRowCount()-1, header1); JLabel jlab=new JLabel("Total:"); String gt=Integer.toString(a); JLabel jlab3=new JLabel(gt); JLabel jlab4=new JLabel(" "); JPanel viewPanel2=new JPanel(); viewPanel2.add(jlab); viewPanel2.add(jlab3); viewPanel2.add(jlab4); viewPanel2.add(previous); viewPanel2.add(next); viewPanel2.add(print); previous.addActionListener(this); print.addActionListener(this); next.addActionListener(this); mainPanel.add(viewPanel2,BorderLayout.PAGE_END); } public JPanel getMainPanel(){ return mainPanel; } private static void createAndShowUI() throws Exception{ frame = new JFrame("Cash Memo"); frame.getContentPane().add(new AllCashTable(name).getMainPanel()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(330,400); //frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); //frame.setVisible(false); } public static void main(String[] args){ java.awt.EventQueue.invokeLater(new Runnable(){ public void run(){ try { createAndShowUI(); } catch (Exception ex) { Logger.getLogger(AllCashTable.class.getName()).log(Level.SEVERE,null,ex); } } }); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==next){ date=data.get(0).get(0); String m[]={"01","02","03","04","05","06","07","08","09","10","11","12"}; Calendar cal=Calendar.getInstance(); date=date.substring(0, 2); d=Integer.parseInt(date)+1; newdate=(d+"/"+m[cal.get(Calendar.MONTH)]+"/"+cal.get(Calendar.YEAR)); frame1 = new JFrame("Cash Memo"); try { frame1.getContentPane().add(new AllCashTable(newdate).getMainPanel()); } catch (Exception ex) { Logger.getLogger(AllCashTable.class.getName()).log(Level.SEVERE, null, ex); } frame1.setSize(330,400); //frame.pack(); frame1.setLocationRelativeTo(null); frame1.setVisible(true); frame.dispose();//here is error nullpointerexception }if(e.getSource()==previous){ date=data.get(0).get(0); String m[]={"01","02","03","04","05","06","07","08","09","10","11","12"}; Calendar cal=Calendar.getInstance(); date=date.substring(0, 2); int ax=Integer.parseInt(date)-1; System.out.println(ax); newdate=(ax+"/"+m[cal.get(Calendar.MONTH)]+"/"+cal.get(Calendar.YEAR)); frame2 = new JFrame("Cash Memo"); try { frame2.getContentPane().add(new AllCashTable(newdate).getMainPanel()); } catch (Exception ex) { Logger.getLogger(AllCashTable.class.getName()).log(Level.SEVERE, null, ex); } //frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame2.setSize(330,400); //frame.pack(); frame2.setLocationRelativeTo(null); frame2.setVisible(true); //frame1.setVisible(false); }if(e.getSource()==print){ try { boolean complete = table.print(); if (complete) { /* show a success message */ System.out.println("Printing Complete"); } else { /*show a message indicating that printing was cancelled */ System.out.println("Not Printed"); } } catch (PrinterException pe) { /* Printing failed, report to the user */ System.out.println(pe); } } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload