要加入keymap。下面的例子我已通过,当你选中"keymap added“时,就可实现ctrl-enter回车了。
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;public class JTextAreaDemo extends JApplet {
private JTextArea textArea = new JTextArea("initial content");
private JCheckBox cbox = new JCheckBox("keymap added");
private Hashtable actionTable = new Hashtable();
private Keymap originalKeymap, newKeymap; public void init() {
Container contentPane = getContentPane(); loadActionTable();
originalKeymap = textArea.getKeymap();
newKeymap = createKeymap(); textArea.setFont(new Font("Dialog", Font.PLAIN, 24)); contentPane.add(new ControlPanel(), BorderLayout.NORTH);
contentPane.add(textArea, BorderLayout.CENTER);
}
private Keymap createKeymap() {
Keymap map = JTextComponent.addKeymap("applet keymap",
textArea.getKeymap()); KeyStroke returnKeyStroke =
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,
InputEvent.CTRL_MASK);
Action returnAction =
getAction(DefaultEditorKit.insertBreakAction); map.addActionForKeyStroke(returnKeyStroke,
returnAction);
return map;
}
private void loadActionTable() {
Action[] actions = textArea.getActions(); for(int i=0; i < actions.length; ++i) {
actionTable.put(actions[i].getValue(Action.NAME),
actions[i]);
}
}
private Action getAction(String name) {
return (Action)actionTable.get(name);
}
class ControlPanel extends JPanel {
public ControlPanel() {
add(cbox); cbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.setKeymap(cbox.isSelected() ?
newKeymap :
originalKeymap); textArea.requestFocus();
}
});
}
}
}
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;public class JTextAreaDemo extends JApplet {
private JTextArea textArea = new JTextArea("initial content");
private JCheckBox cbox = new JCheckBox("keymap added");
private Hashtable actionTable = new Hashtable();
private Keymap originalKeymap, newKeymap; public void init() {
Container contentPane = getContentPane(); loadActionTable();
originalKeymap = textArea.getKeymap();
newKeymap = createKeymap(); textArea.setFont(new Font("Dialog", Font.PLAIN, 24)); contentPane.add(new ControlPanel(), BorderLayout.NORTH);
contentPane.add(textArea, BorderLayout.CENTER);
}
private Keymap createKeymap() {
Keymap map = JTextComponent.addKeymap("applet keymap",
textArea.getKeymap()); KeyStroke returnKeyStroke =
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,
InputEvent.CTRL_MASK);
Action returnAction =
getAction(DefaultEditorKit.insertBreakAction); map.addActionForKeyStroke(returnKeyStroke,
returnAction);
return map;
}
private void loadActionTable() {
Action[] actions = textArea.getActions(); for(int i=0; i < actions.length; ++i) {
actionTable.put(actions[i].getValue(Action.NAME),
actions[i]);
}
}
private Action getAction(String name) {
return (Action)actionTable.get(name);
}
class ControlPanel extends JPanel {
public ControlPanel() {
add(cbox); cbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.setKeymap(cbox.isSelected() ?
newKeymap :
originalKeymap); textArea.requestFocus();
}
});
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货