JTextArea เป็น subclass ของ JTextComponent เป็น multi-line text component แสดงข้อความหรือให้ user input text JTextArea สร้าง CaretListener interface เมื่อ implement functionality ของ JTextArea โดย default JTextArea รองรับ cut, copy และ paste เราสามารถ disable หรือ turn off ฟังก์ชัน cut, copy และ paste ได้โดยใช้ getInputMap().put() ของ JTextArea ใช้ KeyStroke.getKeyStroke("control X") สำหรับ cut, KeyStroke.getKeyStroke("control C") สำหรับ copy และ KeyStroke.getKeyStroke("control V") สำหรับ paste
ตัวอย่าง
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTextAreaCutCopyPasteDisableTest extends JFrame {
private JTextArea textArea;
private JButton cut, copy, paste;
private JPanel panel;
public JTextAreaCutCopyPasteDisableTest() {
setTitle("JTextAreaCutCopyPasteDisable Test");
setLayout(new BorderLayout());
panel = new JPanel();
textArea = new JTextArea();
cut = new JButton("Cut");
cut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
textArea.getInputMap().put(KeyStroke.getKeyStroke("control X"), "none"); // disable cut
}
});
panel.add(cut);
copy = new JButton("Copy");
copy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
textArea.getInputMap().put(KeyStroke.getKeyStroke("control C"), "none"); // disable copy
}
});
panel.add(copy);
paste = new JButton("Paste");
paste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
textArea.getInputMap().put(KeyStroke.getKeyStroke("control V"), "none"); // disable paste
}
});
panel.add(paste);
add(panel, BorderLayout.NORTH);
add(new JScrollPane(textArea), BorderLayout.CENTER);
setSize(400, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new JTextAreaCutCopyPasteDisableTest();
}
}
Output
