gpt4 book ai didi

java - 当文本区域不可编辑时按下按键如何在 jpanel 中显示只读消息文件?

转载 作者:行者123 更新时间:2023-12-01 12:27:01 25 4
gpt4 key购买 nike

当我在 jtextarea 中打开文件时。我使用 textArea.setEditable(false) 将 textarea 设置为不可编辑,但是当我按下该键时,如何在 jpanel 文件中显示消息是只读的。

谢谢。

最佳答案

不要使用 setEditable(false),而是使用 TextFilter:

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
public class TextAreaTest {

/**
*
* @param args
*/
public static void main(String[] args) {

final JFrame frm = new JFrame("Text field test");
final JTextArea area = new JTextArea("Some text here", 20, 50);
((AbstractDocument) area.getDocument()).setDocumentFilter(new DocumentFilter() {
/**
* {@inheritDoc}
*/
@Override
public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
JOptionPane.showMessageDialog(frm, "Area read only");
}

/**
* {@inheritDoc}
*/
@Override
public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
JOptionPane.showMessageDialog(frm, "Area read only");
}

/**
* {@inheritDoc}
*/
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
JOptionPane.showMessageDialog(frm, "Area read only");
}
});
frm.add(new JScrollPane(area));
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.pack();
frm.setVisible(true);
}
}

关于java - 当文本区域不可编辑时按下按键如何在 jpanel 中显示只读消息文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26252614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com