在我的記事本應用程序中,我試圖通過單擊名爲Picture
的JMenuItem
將圖像添加到JTextPane
中,好像它是JLabel
一樣。將圖片插入到JTextPane中
private class Picture implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
fc = new JFileChooser();
FileNameExtensionFilter picture = new FileNameExtensionFilter("JPEG files (*.jpg)", "jpg");
fc.setFileFilter(picture);
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
if (fc.showDialog(Notepad.this, "Insert")!=JFileChooser.APPROVE_OPTION) return;
filename = fc.getSelectedFile().getAbsolutePath();
// If no text is entered for the file name, refresh the dialog box
if (filename==null) return;
// NullPointerException
textArea.insertIcon(createImageIcon(filename));
}
protected ImageIcon createImageIcon(String path)
{
java.net.URL imgURL = Notepad.class.getResource(path);
if (imgURL != null)
{
return new ImageIcon(imgURL);
}
else
{
JOptionPane.showMessageDialog(frame, "Could not find file: " + path);
return null;
}
}
}
問題在於在第20行,那裏是一個NullPointerException
,我已經知道爲什麼會這樣,但...我怎麼寫一行代碼,所以我可以做一些類似的東西textPane.add(image)
(因爲我不能做textPane.add(StyleConstants.setIcon(def, createImageIcon(filename));
)?有沒有另外一個我應該寫我的代碼來正確執行這個?
「格式化代碼」只是意味着使代碼的文字看起來很可讀,有毫無關係與程序的執行或功能。請澄清你正在嘗試做什麼。 – 2011-12-30 02:12:24
@HovercraftFullOfEels好吧,忘記「格式化」部分。我只是想知道如何在對話框中找到圖片並單擊「插入」後將圖像插入jtextarea。 – Rob 2011-12-30 02:15:25
儘管「插入圖片到JTextArea」意味着什麼?你的意思是把它用作背景圖片嗎?或者你的意思是像JLabel或ImageIcon一樣將圖像添加到JTextArea中?問題越清楚,其他人就越容易解決。 – 2011-12-30 02:18:47