全赞功成湿 2015-06-04 12:06 采纳率: 100%
浏览 1772
已采纳

麻烦大家帮我看看我这个空指针异常错在哪里呢?Java

这是部分代码
else if(e.getActionCommand().equals("查找")){
wb=wby.getText();
System.out.print(wb);//这里打印的是我在文本域中输入的文字
new Way(1);//这是一个对话框,里面有“开始”这个按钮
}else if(e.getActionCommand().equals("开始")||e.getActionCommand().equals("下一个")){
System.out.print(wb);//这里的wb却为null,报错,出现空指针问题。把wb=wby.getText();放进来也同样
String temp=wbk.getText();
int s=wb.indexOf(temp,start);//这行出现空指针,因为wb为null。
if(wb.indexOf(temp,start)!=-1){
wby.setSelectionStart(s);
wby.setSelectionEnd(s+temp.length());
wby.setSelectedTextColor(Color.GREEN);
start=s+1;
an10.setText("下一个");
//value=value.substring(s+temp.length());//不能截取字串
}else {
JOptionPane.showMessageDialog(this, "查找完毕!", "提示", 0);
this.dispose();
}
我想问的是,“开始”里的wb为什么会是null?我很不解,怎么样把”查找“里的的wb放进”开始“里呢?

  • 写回答

7条回答

  • JonsonJiao 2015-06-05 08:40
    关注

    我写了一个测试的样例,你看下。可以在文本域中写入文本进行查找。启动后,在输入框中填入要查找的内容,然后点击开始按钮。

    /**
     * 
     */
    
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import java.awt.BorderLayout;
    import java.awt.GridBagLayout;
    import javax.swing.JLabel;
    import java.awt.GridBagConstraints;
    import javax.swing.JTextField;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JTextArea;
    
    /**
     * @author jiaoqishun 2015-6-5 下午4:25:44
     */
    public class FindText extends JFrame {
        private JTextField txt_Search;
    
        public FindText() {
    
            JPanel panel = new JPanel();
            getContentPane().add(panel, BorderLayout.CENTER);
            GridBagLayout gbl_panel = new GridBagLayout();
            gbl_panel.columnWidths = new int[] { 0, 0, 0, 0 };
            gbl_panel.rowHeights = new int[] { 0, 0, 0 };
            gbl_panel.columnWeights = new double[] { 1.0, 1.0, 0.0,
                    Double.MIN_VALUE };
            gbl_panel.rowWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE };
            panel.setLayout(gbl_panel);
    
            JLabel lbl_Search = new JLabel(
                    "\u8F93\u5165\u8981\u67E5\u627E\u7684\u5185\u5BB9\uFF1A");
            GridBagConstraints gbc_lbl_Search = new GridBagConstraints();
            gbc_lbl_Search.insets = new Insets(0, 0, 5, 5);
            gbc_lbl_Search.anchor = GridBagConstraints.EAST;
            gbc_lbl_Search.gridx = 0;
            gbc_lbl_Search.gridy = 0;
            panel.add(lbl_Search, gbc_lbl_Search);
    
            txt_Search = new JTextField();
            GridBagConstraints gbc_txt_Search = new GridBagConstraints();
            gbc_txt_Search.insets = new Insets(0, 0, 5, 5);
            gbc_txt_Search.fill = GridBagConstraints.HORIZONTAL;
            gbc_txt_Search.gridx = 1;
            gbc_txt_Search.gridy = 0;
            panel.add(txt_Search, gbc_txt_Search);
            txt_Search.setColumns(10);
    
            JButton btn_Search = new JButton("\u5F00\u59CB");
            GridBagConstraints gbc_btn_Search = new GridBagConstraints();
            gbc_btn_Search.insets = new Insets(0, 0, 5, 0);
            gbc_btn_Search.gridx = 2;
            gbc_btn_Search.gridy = 0;
            panel.add(btn_Search, gbc_btn_Search);
    
            final JTextArea textArea = new JTextArea();
            GridBagConstraints gbc_textArea = new GridBagConstraints();
            gbc_textArea.gridwidth = 3;
            gbc_textArea.insets = new Insets(0, 0, 0, 5);
            gbc_textArea.fill = GridBagConstraints.BOTH;
            gbc_textArea.gridx = 0;
            gbc_textArea.gridy = 1;
            panel.add(textArea, gbc_textArea);
    
            setTextAreaContent(textArea);
    
            btn_Search.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    String findStr = txt_Search.getText();
                    if ("".equals(findStr)) {
                        JOptionPane.showMessageDialog(null, "查找文本为空,请重新输入。");
                        return;
                    } else {
                        findText(findStr, textArea);
                    }
                }
            });
    
        }
    
        /**
         * @param findStr
         * @param textArea
         */
        protected void findText(String findStr, JTextArea textArea) {
            String textAreaText = textArea.getText();
            if (textAreaText == null || "".equals(textAreaText)) {
                JOptionPane.showMessageDialog(null, "文本域内容为空,请重新输入。");
                return;
            } else {
                int fromIndex = 0;
                int count = 0;
                int index = textAreaText.indexOf(findStr, fromIndex);
                while(index>=0){
                    count++;
                    index = textAreaText.indexOf(findStr, index+1);
                }
                if (count > 0) {
                    JOptionPane.showMessageDialog(null, "查找成功,共找到"+count+"处。");
                }else{
                    JOptionPane.showMessageDialog(null, "文本域中不存在该词汇。");
                }
            }
        }
    
        /**
         * 设置JTextArea中的内容
         */
        private void setTextAreaContent(JTextArea textArea) {
            textArea.setText("白日依山尽,\r\n黄河入海流;\r\n欲穷千里目,\r\n更上一层楼");
        }
    
        public static void main(String[] args) {
            FindText findText = new FindText();
            findText.setTitle("查找文本样例");
            findText.setSize(300, 300);
            findText.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            findText.setLocationRelativeTo(null);
            findText.setVisible(true);
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 vhdl+MODELSIM
  • ¥20 simulink中怎么使用solve函数?
  • ¥30 dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,求解决办法
  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题