0

プログラムを実行するたびにこのエラーが発生します。また、いくつかのボタンを押しても、リスナーによると反応しません(理由がわかりません!)

  1. すべてのボタンをまとめて登録しました
  2. すべてのボタンが同じアクション リスナー クラスを使用する

しかし

3 番目と 4 番目のボタンのみがリスナーに応答しますが、1 番目と 2 番目のボタンは反応しません

    Exception in thread "main" java.lang.NullPointerException
at IntergrationPoint.<init>(IntergrationPoint.java:73)
at MainLibrary.main(MainLibrary.java:23)

以下は、これらすべての問題をもたらすものです。. .(SSCCEもあると思います)

    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import static java.awt.image.ImageObserver.WIDTH;
    import java.sql.SQLException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
    import javax.swing.UIManager;

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */

    /**
     *
     * @author Yunus
     */
    public class IntergrationPoint extends JFrame{
        JPanel tabOneContent;
        JPanel tabOTwoContent;
        JPanel tabThreeContent;
        JPanel tabFourContent;

JTabbedPane intergrationTabs;

public JButton createAccount;
public JButton borrowBook;
public JButton returnBook;
public JButton addBook;
public JButton deleteBook;
public JButton deleteMember;
public JButton displayMembers;
public JButton displayAvailableBooks;
public IntergrationPoint()
{
    setLookAndFeel();
    intergrationTabs = new JTabbedPane();
    setSize(761, 430);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    tabOneContent = bookOperations();
    tabOTwoContent = memberOperations();

    intergrationTabs.addTab("<html><body marginheight=30 marginwidth=20>Book Operations<body><html>", null,tabOneContent,"");
    intergrationTabs.addTab("<html><body marginheight=30 marginwidth=20>Member Operations<body><html>", null,tabOTwoContent,"");
    intergrationTabs.addTab("<html><body marginheight=30 marginwidth=20>Display Members<body><html>", null,memberOperations(),"Display all available member");
    intergrationTabs.addTab("<html><body marginheight=30 marginwidth=20>Display Books<body><html>", null,memberOperations(),"Display all available book");
    intergrationTabs.addTab("<html><body marginheight=30 marginwidth=20>Login - Logout<body><html>", null,memberOperations(),"Login - Logout");

    add(intergrationTabs);
    setVisible(true);
    setResizable(false);

    ButtonListener listener = new ButtonListener();
    // Register listener with buttons 
    borrowBook.addActionListener(listener);
    returnBook.addActionListener(listener);
    addBook.addActionListener(listener);
    deleteBook.addActionListener(listener);


}

class ButtonListener implements ActionListener {
    @Override /** Implement actionPerformed */
    public void actionPerformed(ActionEvent ev){
        if(ev.getSource() == borrowBook)
            new BorrowBook();
        else if(ev.getSource() == returnBook)
            new ReturnBook();
        else if(ev.getSource() == addBook)
            try {
            new AddBook();
        } catch (SQLException ex) {
            Logger.getLogger(IntergrationPoint.class.getName()).log(Level.SEVERE, null, ex);
        }
        else if(ev.getSource() == deleteBook)
            new DeleteBook();

     }
}


public JPanel bookOperations()
{
    JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));

    JPanel insidePanel = new JPanel(new GridBagLayout());

    GridBagConstraints constraints = new  GridBagConstraints();
    constraints.fill =  GridBagConstraints.BOTH;
constraints.anchor = GridBagConstraints.NORTHWEST;
    constraints.gridwidth = 1;
    constraints.gridheight = 2;
    constraints.ipadx = 5;
constraints.ipady = 45;

    borrowBook = new JButton("Borrow Book");
    returnBook = new JButton("Return Book");
    addBook = new JButton("Add Book");
    deleteBook = new JButton("Delete Book");

    constraints.gridx = 0;
    constraints.gridy = 0;
    insidePanel.add(borrowBook,constraints);

    constraints.gridx = 0;
    constraints.gridy = 2;
    insidePanel.add(returnBook,constraints);

    constraints.gridx = 0;
    constraints.gridy = 4;
    insidePanel.add(addBook,constraints);

    constraints.gridx = 0;
    constraints.gridy = 6;
    insidePanel.add(deleteBook,constraints);

    panel.add(insidePanel);

    return panel;
}


public JPanel memberOperations()
{
    JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));

    JPanel insidePanel = new JPanel(new GridBagLayout());

    GridBagConstraints constraints = new  GridBagConstraints();
    constraints.fill =  GridBagConstraints.BOTH;
constraints.anchor = GridBagConstraints.NORTHWEST;
    constraints.gridwidth = 1;
    constraints.gridheight = 2;
    constraints.ipadx = 0;
constraints.ipady = 45;

    borrowBook = new JButton("Add Member");
    returnBook = new JButton("Delete Member");

    constraints.gridx = 0;
    constraints.gridy = 0;
    insidePanel.add(borrowBook,constraints);

    constraints.gridx = 0;
    constraints.gridy = 2;
    insidePanel.add(returnBook,constraints);

    panel.add(insidePanel);

    return panel;
}


private void setLookAndFeel()
{
    try
    {

            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

    }catch(Exception ex)
    {
            ex.getMessage();
    }
}
}


    import java.sql.SQLException;
    import ui.BorrowBookUI;
    import ui.ReturnBookUI;

    public class MainLibrary {
        public static void main(String[] args) throws SQLException
        {
            IntergrationPoint intergrationPoint = new IntergrationPoint();
        }

    }
4

1 に答える 1

1

ボタンは と で初期化されmemberOperations()ますbookOperations()。たとえば、同じ member を使用していますborrowBook。ただし、 への呼び出しごとに再割り当てされますmemberOperations()。したがって、 のセットアップに到達しButtonListenerたら、実際にはタブにあるボタンにリスナーを設定していLogin - Logoutます。したがって、そのタブに切り替えてヒットAdd Memberすると、アクションがトリガーされBorrowBook()ます。

NPE については、投稿されたコードが断片に過ぎないため、すべてのコードが含まれているわけではなく、残念ながらコンパイルされません。SSCCEを投稿してください。

于 2013-11-05T16:41:13.610 に答える