我在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表单中工作?
行为改变的原因可以在Copy in sand-boxed app. in 1.6.0_24+找到。安全错误修复适用于applet和JWS应用程序。
解决方案(在链接线程中再次概述)是使用JNLP API的ClipboardService
。这是一个demo. of the ClipboardService。
这是我从textfield到另一个的答案副本
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);
}
}