0

我在从 JTextComponent 工作中获取复制和粘贴方法时遇到了一些问题

对于我的程序,我有一个字符串数组,它们将成为菜单选项。“复制”和“粘贴”是其中的两个。

 else if (e.getActionCommand().equalsIgnoreCase("Copy"))
            {
                JTextArea a = new JTextArea();
                a.setEditable(true);
                a.copy();
            }
            else if (e.getActionCommand().equalsIgnoreCase("Paste"))
            {
               JTextArea a = new JTextArea();
                a.setEditable(true);
                 a.getSelectedText();
                 a.paste();
            }

我没有收到任何错误消息,但它不起作用。任何帮助,将不胜感激

4

2 回答 2

1

JTextArea每次要执行操作时,您都会创建一个新实例。

这些不会代表屏幕上的实际内容。相反,与实例变量交互或将JTextArea屏幕上的实例作为参数传递

于 2013-08-04T04:35:36.867 回答
0

您正在声明一个本地对象,其范围仅在 if 条件下受到限制:

            else if (e.getActionCommand().equalsIgnoreCase("Copy"))
            {
                JTextArea a = new JTextArea();    // CREATING A NEW OBJECT
                a.setEditable(true);
                a.copy();
            }                // AS Soon as the code comes HERE THE Instance IS LOST with the data

宣布;

 JTextArea a = new JTextArea();  outside the if condition, maybe in the class before main(){}
 Create an private instance variable of the same.

希望这可以帮助。让我知道,如果你有任何问题。

class TEST{
         public JTextArea a = new JTextArea();   

          TEST objectOfTEST = new TEST():
          publis static String someText = "";

         public static void main(String[] args){

               if(e.getActionCommand().equalsIgnoreCase("Copy")){
                   someText = objectOfTEST.a.getText();
               }
               else if(e.getActionCommand().equalsIgnoreCase("Paste")){
                   // PERFORM SOME OPERATION
                   someText = "Paste this";
                   objectOfTEST.a.setText("Some TEXT that you want to set here");
               }
         }
}
于 2013-08-04T04:37:15.280 回答