Java Swing - 在Java Web Start中,复制/粘贴不起作用

时间:2012-01-10 14:53:21

标签: java swing java-web-start

我在Java Swing中创建了一个文本域

txtSessionID = new JTextField();
txtSessionID.setText("enter here");
txtSessionID.setBounds(6, 22, 438, 28);
frame.getContentPane().add(txtSessionID);

当我尝试将某些内容复制到文本字段时,如果我在桌面上运行jar,那么它是有效的,但如果我使用Java Web Start启动它则不行。

问题:

为什么会这样? 和 如何让CCP在JWS表单中工作?

2 个答案:

答案 0 :(得分:4)

可以在Copy in sand-boxed app. in 1.6.0_24+中找到行为改变的原因。安全错误修复适用于applet和amp; JWS应用程序。

解决方案(在链接线程中再次概述)是使用JNLP API的ClipboardService代替。这是demo. of the ClipboardService

答案 1 :(得分:0)

这是我从文本字段到另一个答案的副本

public class GuiFrame1 {

    private JFrame frame;

    private JTextField textField_1;
    private JTextField textField_2;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    GuiFrame1 window = new GuiFrame1();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public GuiFrame1() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JLabel NewLabel_1 = new JLabel("\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03B5\u03B9\u03C3\u03AC\u03B3\u03B5\u03C4\u03B5 \u03C4\u03BF \u03CC\u03BD\u03BF\u03BC\u03AC \u03C3\u03B1\u03C2");
        NewLabel_1.setBounds(10, 11, 191, 14);
        frame.getContentPane().add(NewLabel_1);

        JLabel NewLabel_2 = new JLabel("\u03A4\u03BF \u03CC\u03BD\u03BF\u03BC\u03AC \u03BC\u03BF\u03C5 \u03B5\u03AF\u03BD\u03B1\u03B9");
        NewLabel_2.setBounds(10, 63, 191, 14);
        frame.getContentPane().add(NewLabel_2);

        textField_1 = new JTextField();
        textField_1.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent arg0) {
            //  System.out.println(arg0.getKeyCode());
                if(arg0.getKeyCode()==10) {
                    String name = textField_1.getText();
                    textField_2.setText(name);
                }
            }
        });

        textField_1.setBounds(228, 8, 119, 20);
        frame.getContentPane().add(textField_1);
        textField_1.setColumns(10);

        textField_2 = new JTextField();
        textField_2.setBounds(228, 60, 119, 20);
        frame.getContentPane().add(textField_2);
        textField_2.setColumns(10);
    }
}