我有一個JTextField
,我需要在文本字段中編輯或添加新內容。能夠在使用文檔偵聽器之後獲取文本,但無法設置文本。它拋出像如何使用文檔偵聽器將文本設置爲標題?
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException:
Attempt to mutate in notification
錯誤我的代碼:
t_pageno.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent e) {
warn();
}
@Override
public void removeUpdate(DocumentEvent e) {
warn();
}
@Override
public void insertUpdate(DocumentEvent e) {
warn();
}
public void warn() {
if (
Integer.parseInt(t_pageno.getText()) > Integer.parseInt(Config.maxpageno)
&&
Integer.parseInt(t_pageno.getText()) < 0
) {
JOptionPane.showMessageDialog(null,
"Error: Please enter number bigger than 0 and less than "+Config.maxpageno, "Error Massage",
JOptionPane.ERROR_MESSAGE);
}
else
{
String pageno = t_pageno.getText();
if (!pageno.equals(new File(Current_index).getName().substring(18, 20))) {
int Storyidconfirm = JOptionPane.showConfirmDialog(null, "Do You want to change the Page No", "Change PageNo", JOptionPane.YES_NO_OPTION);
if (Storyidconfirm == JOptionPane.YES_OPTION) {
String newidchange = new File(Current_index).getName().substring(0, 18) + pageno + new File(Current_index).getName().substring(21, new File(Current_index).getName().length());
JOptionPane.showMessageDialog(null, "Change in page no ??????????");
}
else
{
JOptionPane.showMessageDialog(null, "Reversing to old page no");
JOptionPane.showMessageDialog(null, "new File(Current_index).getName().substring(18, 20) --> "+new File(Current_index).getName().substring(18, 20));
t_pageno.setText(new File(Current_index).getName().substring(18, 20).toString());
}
}
}
}
});
JOptionPane.showMessageDialog(NULL,...,應該由invokeLater的 – mKorbel 2015-02-07 10:14:38
@mKorbel在延遲這種情況下,我會一起避免它,拉起一個'JOptionPane',因爲用戶輸入一個錯誤的字符只是一個痛苦的屁股,並有更好的方式讓用戶知道他們違反了你有什麼規則地方,但那只是我 – MadProgrammer 2015-02-07 10:47:49