这是部分代码
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放进”开始“里呢?
麻烦大家帮我看看我这个空指针异常错在哪里呢?Java
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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 网站显示不安全连接问题