Java:无法从按钮打开其他帧

时间:2018-01-22 05:20:02

标签: java jbutton frame jgrasp

我创建了一个按钮,当我点击它时,我想打开另一个框架,按钮正在工作,但现在它不会打开框架。

第一个程序---

// By: Qamar, Dimitri and Ehsan 
// Date: 21/12/2017
// Description: This is the front page of the Address Book

import javax.swing.*;
import java.awt.event.*;
import java.awt. *;
import java.io.*;


   public class AddressBook implements ActionListener     // Create a new class Address Book
{
    JFrame Start=new JFrame("Address Book");   // Set name of Frame
    JButton Open;   // Create a new button Open
 {
      Open=new JButton("OPEN");  // set name of button
      Start.setSize(500,600);   // set size of frame  
      Start.add(new JLabel(new ImageIcon("backgroundforlab.jpg")));   // add background picture
      Start.setVisible(true);  // make the frame visible 
      Start.setLayout(null);
      Start.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);  
      Start.getContentPane().add(Open);  //add button to frame
      Open.setBounds(100,385,295,88);   // set size of button
      Open.addActionListener(this);

 }

   public void actionPerformed(ActionEvent e)
{
      Start.dispose();  // When button is clicked close frame and open book222
      Book c=new Book();
}

   public static void main(String ag[])
  {
      AddressBook A=new AddressBook();          // Run AddressBook
  }


}

现在我想打开的框架---

import javax.swing.*;
import java.awt.event.*;
import java.awt. *;
import java.io.*;
import java.io.FileWriter;           // Importing all necessary packages/extensions 
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

// Created By: Qamar Irfan, Dimitri Kolechi and Ehsan Saleh
// Date: 21/12/2017
// Description: This is the main program of Address Book. You can Create, Delete, Save and import contacts to this book. 

 public class Book {
 public static void main(String[] args){


   // Making the layout of the frame and adding all buttons and labels

    JFrame Start=new JFrame("Creating Contacts");     // Create frame
    JTable table = new JTable();      // Create Table

    FileWriter read; // Ceate new fileWriter
    JButton Create;  
    JButton Quit;     // Create new buttons
    JButton Delete;
    JButton Save;
    JButton Import;
    JButton Help;

    JLabel name1 = new JLabel("Last Name");  
    JLabel name2= new JLabel ("First Name"); 
    JLabel phone= new JLabel ("Phone Number");    // Create Labels
    JLabel address= new JLabel ("Address");
    JLabel pcode= new JLabel ("Postal Code");
    JLabel eaddress= new JLabel ("Email Address");
    JLabel note= new JLabel ("Note");

    JTextField lastName = new JTextField();
    JTextField firstName= new JTextField();
    JTextField phoneNumber= new JTextField();
    JTextField addressLocation= new JTextField(); // Create Text Fields
    JTextField postalCode= new JTextField();
    JTextField emailAddress= new JTextField();
    JTextField noteMemo= new JTextField();
{
    Create=new JButton("Create Contact"); 
    Quit= new JButton ("Quit");    // set name of buttons
    Delete= new JButton ("Delete a Contact");
    Save= new JButton ("Save Contacts");
    Import= new JButton ("Import Saved Contacts");
    Help= new JButton ("Instructions");

    Start.setSize(1215,600);       // set size of frame
    Start.setVisible(true);  // make the frame visible 
    Start.setLayout(null);
    Start.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);  

    Start.getContentPane().add(Create); 
    Start.getContentPane().add(Quit);    // add all buttons to frame
    Start.getContentPane().add(Delete); 
    Start.getContentPane().add(Save);
    Start.getContentPane().add(Import);
    Start.getContentPane().add(Help);


    Start.getContentPane().add(name1);
    Start.getContentPane().add(name2);
    Start.getContentPane().add(phone);
    Start.getContentPane().add(address);    // add all Labels
    Start.getContentPane().add(pcode);
    Start.getContentPane().add(eaddress);
    Start.getContentPane().add(note);

    Start.getContentPane().add(lastName);
    Start.getContentPane().add(firstName);
    Start.getContentPane().add(phoneNumber);
    Start.getContentPane().add(addressLocation);  // add all Text Field
    Start.getContentPane().add(postalCode);
    Start.getContentPane().add(emailAddress);
    Start.getContentPane().add(noteMemo);                         

    Help.setBounds(820,150,200,30);
    Create.setBounds(700,20,200,30);  // set size of buttons
    Delete.setBounds(700,90,200,30);  
    Save.setBounds(950,90,200,30);
    Import.setBounds(950,20,200,30);
    Quit.setBounds(820,200,200,30);

    name1.setBounds(40,11,100,100);  
    name2.setBounds(250,11,100,100);
    phone.setBounds(460,11,100,100);     // set location of all Labels
    address.setBounds(40,75,100,100);
    pcode.setBounds(250,75,100,100);
    eaddress.setBounds(460,75,100,100);
    note.setBounds(160,150,100,100);

    lastName.setBounds(105,50,100,25);
    firstName.setBounds(320,50,100,25); 
    phoneNumber.setBounds(550,50,100,25); 
    addressLocation.setBounds(105,114,100,25);  // set location of all Text Fields 
    postalCode.setBounds(320,114,100,25); 
    emailAddress.setBounds(550,114,100,25); 
    noteMemo.setBounds(200,180,300,50);   

    // Creating The Table

    Object[] columns = {"Last Name","First Name","Phone Number","Address","Postal Code","Email Address","Note"};
    DefaultTableModel model = new DefaultTableModel();
    model.setColumnIdentifiers(columns);                       // making the table 
    table.setModel(model);

    table.setBackground(Color.LIGHT_GRAY);
    table.setForeground(Color.black);
    Font font = new Font("",4,12);          // setting the table up
    table.setFont(font);
    table.setRowHeight(30);

    JScrollPane pane = new JScrollPane(table);
    pane.setBounds(0, 275, 1200, 700);            // setting size and location of table
    Start.setLayout(null);                   // adding table to frame
    Start.add(pane);
    Object[] row = new Object[7];


    // Setting the functions of all buttons 

    Quit.addActionListener(new ActionListener(){

      @Override                                       // setting the quit buttons function
      public void actionPerformed(ActionEvent e) {

        System.exit(0);     // When Quit is clicked close frame
        }
     }); 

     Help.addActionListener(new ActionListener(){

      @Override                                       // setting the Help buttons function
      public void actionPerformed(ActionEvent e) {

      JOptionPane.showMessageDialog(null, "Type the credentials in the fields, make sure to add '/' at end of every field. after typing, click create, make sure everytime create a contact to save it. once saved delete contact and then save another contact.","Instructions", JOptionPane.INFORMATION_MESSAGE); 

                 // When Help is clicked open pop up box with instructions 
        }
     }); 


    Delete.addActionListener(new ActionListener(){

      @Override
      public void actionPerformed(ActionEvent e) {

        int i = table.getSelectedRow();            // setting the delete buttons function
           if(i >= 0){

                  model.removeRow(i);            // delete the selected row
                  }
           else{
                  System.out.println("Please select a Contact");   // If no row is selected than nothing will be deleted
                  }
            }
        });

     Create.addActionListener(new ActionListener(){

      @Override                                      // setting the create buttons function
      public void actionPerformed(ActionEvent e) { 

        row[0] = lastName.getText();
        row[1] = firstName.getText();
        row[2] = phoneNumber.getText();           // when create is presses get
        row[3] = addressLocation.getText();       // the data from the textfields 
        row[4] = postalCode.getText();
        row[5] = emailAddress.getText();
        row[6] = noteMemo.getText();
                 model.addRow(row);
           }
        });

    Save.addActionListener(new ActionListener(){

      @Override                                   // setting the Save button function 
      public void actionPerformed(ActionEvent e){


       try{

         File file = new File("records.txt");
                                                      // if the file records.txt does not exist
                                                      // then the program will create one itself
               if(!file.exists()){
                   file.createNewFile();
               }

               FileWriter read = new FileWriter("records.txt", true);  // create new FileWriter
               BufferedWriter write1 = new BufferedWriter(read);          // create new BufferedWriter


               for(int i = 0; i < table.getRowCount(); i++){            // get the amount of rows in JTable

                   for(int j = 0; j < table.getColumnCount(); j++){
                       write1.write(table.getModel().getValueAt(i, j)+" ");  // write all data from table in records.txt
                   }

                   write1.write("\r\n");    // add space between every contact
               }

               write1.close();  
               read.close();

               JOptionPane.showMessageDialog(null, "All Contacts Saved");   // when contacts successfully transferred show pop up box

               }catch(Exception ex){
                   ex.printStackTrace();
               }
           }
        });
    Import.addActionListener(new ActionListener(){

      @Override                                   // setting the Import button function 
      public void actionPerformed(ActionEvent e){


       try {
            BufferedReader write2 = new BufferedReader(new FileReader("records.txt"));   // find the file records.txt

            Object[] tableLines = write2.lines().toArray(); 

            for(int i = 0; i < tableLines.length; i++)    // add contacts to JTable
            {
                String line = tableLines[i].toString().trim();
                String[] dataRow = line.split("/");     // every space means new column
                model.addRow(dataRow);
            }


        } catch (Exception ex) {

        }
    } 

        });



   }
  }
 }
  // END OF PROGRAM

............................................... .................................................. .................................................. .................................................. ................................................

2 个答案:

答案 0 :(得分:1)

更正您的图书类make Book以扩展JFrame,然后重新组织您的代码,如下所示。

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
// Importing all necessary packages/extensions 

// Created By: Qamar Irfan, Dimitri Kolechi and Ehsan Saleh
// Date: 21/12/2017
// Description: This is the main program of Address Book. You can Create, Delete, Save and import contacts to this book. 

public class Book extends JFrame {

    // Making the layout of the frame and adding all buttons and labels

    JTable table = new JTable(); // Create Table

    DefaultTableModel model = new DefaultTableModel();
    JTextField lastName = new JTextField();
    JTextField firstName = new JTextField();
    JTextField phoneNumber = new JTextField();
    JTextField addressLocation = new JTextField(); // Create Text Fields
    JTextField postalCode = new JTextField();
    JTextField emailAddress = new JTextField();
    JTextField noteMemo = new JTextField();
    Object[] row = new Object[7];

    public Book() {
        super("Creating Contacts"); // Create frame
        init();
    }

    public void init() {

        JLabel name1 = new JLabel("Last Name");
        JLabel name2 = new JLabel("First Name");
        JLabel phone = new JLabel("Phone Number"); // Create Labels
        JLabel address = new JLabel("Address");
        JLabel pcode = new JLabel("Postal Code");
        JLabel eaddress = new JLabel("Email Address");
        JLabel note = new JLabel("Note");

        JButton Create = new JButton("Create Contact");
        JButton Quit = new JButton("Quit"); // set name of buttons
        JButton Delete = new JButton("Delete a Contact");
        JButton Save = new JButton("Save Contacts");
        JButton Import = new JButton("Import Saved Contacts");
        JButton Help = new JButton("Instructions");

        setSize(1215, 600); // set size of frame
        setVisible(true); // make the frame visible
        setLayout(null);
        setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

        getContentPane().add(Create);
        getContentPane().add(Quit); // add all buttons to frame
        getContentPane().add(Delete);
        getContentPane().add(Save);
        getContentPane().add(Import);
        getContentPane().add(Help);

        getContentPane().add(name1);
        getContentPane().add(name2);
        getContentPane().add(phone);
        getContentPane().add(address); // add all Labels
        getContentPane().add(pcode);
        getContentPane().add(eaddress);
        getContentPane().add(note);

        getContentPane().add(lastName);
        getContentPane().add(firstName);
        getContentPane().add(phoneNumber);
        getContentPane().add(addressLocation); // add all Text Field
        getContentPane().add(postalCode);
        getContentPane().add(emailAddress);
        getContentPane().add(noteMemo);

        Help.setBounds(820, 150, 200, 30);
        Create.setBounds(700, 20, 200, 30); // set size of buttons
        Delete.setBounds(700, 90, 200, 30);
        Save.setBounds(950, 90, 200, 30);
        Import.setBounds(950, 20, 200, 30);
        Quit.setBounds(820, 200, 200, 30);

        name1.setBounds(40, 11, 100, 100);
        name2.setBounds(250, 11, 100, 100);
        phone.setBounds(460, 11, 100, 100); // set location of all Labels
        address.setBounds(40, 75, 100, 100);
        pcode.setBounds(250, 75, 100, 100);
        eaddress.setBounds(460, 75, 100, 100);
        note.setBounds(160, 150, 100, 100);

        lastName.setBounds(105, 50, 100, 25);
        firstName.setBounds(320, 50, 100, 25);
        phoneNumber.setBounds(550, 50, 100, 25);
        addressLocation.setBounds(105, 114, 100, 25); // set location of all
                                                        // Text Fields
        postalCode.setBounds(320, 114, 100, 25);
        emailAddress.setBounds(550, 114, 100, 25);
        noteMemo.setBounds(200, 180, 300, 50);

        // Creating The Table

        Object[] columns = { "Last Name", "First Name", "Phone Number",
                "Address", "Postal Code", "Email Address", "Note" };
        model.setColumnIdentifiers(columns); // making the table
        table.setModel(model);

        table.setBackground(Color.LIGHT_GRAY);
        table.setForeground(Color.black);
        Font font = new Font("", 4, 12); // setting the table up
        table.setFont(font);
        table.setRowHeight(30);

        JScrollPane pane = new JScrollPane(table);
        pane.setBounds(0, 275, 1200, 700); // setting size and location of
                                            // table
        setLayout(null); // adding table to frame
        add(pane);

        // Setting the functions of all buttons

        Quit.addActionListener(new ActionListener() {

            @Override
            // setting the quit buttons function
            public void actionPerformed(ActionEvent e) {

                System.exit(0); // When Quit is clicked close frame
            }
        });

        Help.addActionListener(new ActionListener() {

            @Override
            // setting the Help buttons function
            public void actionPerformed(ActionEvent e) {

                JOptionPane
                        .showMessageDialog(
                                null,
                                "Type the credentials in the fields, make sure to add '/' at end of every field. after typing, click create, make sure everytime create a contact to save it. once saved delete contact and then save another contact.",
                                "Instructions", JOptionPane.INFORMATION_MESSAGE);

                // When Help is clicked open pop up box with instructions
            }
        });

        Delete.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                int i = table.getSelectedRow(); // setting the delete
                                                // buttons function
                if (i >= 0) {

                    model.removeRow(i); // delete the selected row
                } else {
                    System.out.println("Please select a Contact"); // If no
                                                                    // row
                                                                    // is
                                                                    // selected
                                                                    // than
                                                                    // nothing
                                                                    // will
                                                                    // be
                                                                    // deleted
                }
            }
        });

        Create.addActionListener(new ActionListener() {

            @Override
            // setting the create buttons function
            public void actionPerformed(ActionEvent e) {

                row[0] = lastName.getText();
                row[1] = firstName.getText();
                row[2] = phoneNumber.getText(); // when create is presses
                                                // get
                row[3] = addressLocation.getText(); // the data from the
                                                    // textfields
                row[4] = postalCode.getText();
                row[5] = emailAddress.getText();
                row[6] = noteMemo.getText();
                model.addRow(row);
            }
        });

        Save.addActionListener(new ActionListener() {

            @Override
            // setting the Save button function
            public void actionPerformed(ActionEvent e) {

                try {

                    File file = new File("records.txt");
                    // if the file records.txt does not exist
                    // then the program will create one itself
                    if (!file.exists()) {
                        file.createNewFile();
                    }

                    FileWriter read = new FileWriter("records.txt", true); // create
                                                                            // new
                                                                            // FileWriter
                    BufferedWriter write1 = new BufferedWriter(read); // create
                                                                        // new
                                                                        // BufferedWriter

                    for (int i = 0; i < table.getRowCount(); i++) { // get
                                                                    // the
                                                                    // amount
                                                                    // of
                                                                    // rows
                                                                    // in
                                                                    // JTable

                        for (int j = 0; j < table.getColumnCount(); j++) {
                            write1.write(table.getModel().getValueAt(i, j)
                                    + " "); // write all data from table in
                                            // records.txt
                        }

                        write1.write("\r\n"); // add space between every
                                                // contact
                    }

                    write1.close();
                    read.close();

                    JOptionPane.showMessageDialog(null, "All Contacts Saved"); // when
                                                                                // contacts
                                                                                // successfully
                                                                                // transferred
                                                                                // show
                                                                                // pop
                                                                                // up
                                                                                // box

                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
        Import.addActionListener(new ActionListener() {

            @Override
            // setting the Import button function
            public void actionPerformed(ActionEvent e) {
                try {
                    BufferedReader write2 = new BufferedReader(new FileReader(
                            "records.txt")); // find the file // records.txt

                    Object[] tableLines = write2.lines().toArray();

                    for (int i = 0; i < tableLines.length; i++) // add //
                                                                // contacts //
                                                                // to JTable
                    {
                        String line = tableLines[i].toString().trim();
                        String[] dataRow = line.split("/"); // every space //
                                                            // means new //
                                                            // column
                        model.addRow(dataRow);
                    }

                } catch (Exception ex) {

                }
            }

        });

    }
}
// END OF PROGRAM

答案 1 :(得分:0)

Book c = new Book();之后写

c.setVisible(true);