Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để tắt chức năng cắt, sao chép và dán của JTextArea trong Java?


A JTextArea là một lớp con của JTextComponent lớp và nó là thành phần văn bản nhiều dòng để hiển thị văn bản hoặc cho phép người dùng nhập văn bản. JTextArea có thể tạo CaretListener khi chúng tôi đang cố gắng triển khai chức năng của JTextArea. Theo mặc định, JTextArea lớp có thể hỗ trợ cắt, sao chép và dán chức năng, chúng tôi cũng có thể tắt hoặc tắt chức năng của cắt, sao chép và dán bằng cách sử dụng getInputMap (). put () phương thức của JTextArea lớp. Chúng tôi có thể sử dụng KeyStroke.getKeyStroke ("điều khiển X") để cắt, KeyStroke.getKeyStroke ("điều khiển C") để sao chép và KeyStroke.getKeyStroke ("control V") để dán.

Ví dụ.

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();
   }
}

Đầu ra

Làm cách nào để tắt chức năng cắt, sao chép và dán của JTextArea trong Java?