📄 s22.htm
字号:
<p> </p> <p align="center"><b>例22-5 单行文本域和缺省按钮</b></p> <hr size="1" noshade> import javax.swing.*;<br> import javax.swing.text.*;<br> import java.awt.*;<br> import java.awt.event.*;<br> import java.util.*; <p>public class Test extends JFrame {<br> private JTextField field = new JTextField(10);<br> private JButton b = new JButton("Default Button");<br> private JCheckBox cb = new JCheckBox(<br> "Text field fires action event");<br> public Test() {<br> Container contentPane = getContentPane();</p> <p> SwingUtilities.getRootPane(this).setDefaultButton(b);<br> cb.setSelected(true);</p> <p> contentPane.setLayout(new FlowLayout(<br> FlowLayout.CENTER,10,20));<br> contentPane.add(field);<br> contentPane.add(b);<br> contentPane.add(cb);</p> <p> b.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> JOptionPane.showMessageDialog(Test.this,<br> "Button fired action event");<br> }<br> });<br> field.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> JOptionPane.showMessageDialog(Test.this,<br> "Textfield fired action event");<br> }<br> });<br> cb.addActionListener(new ActionListener() {<br> private Keymap km;<br> private KeyStroke ks;<br> private Action action;</p> <p> public void actionPerformed(ActionEvent e) {<br> if(cb.isSelected()) {<br> km.addActionForKeyStroke(ks, action);<br> }<br> else {<br> if(ks == null) {<br> km = field.getKeymap();<br> ks = KeyStroke.getKeyStroke(<br> KeyEvent.VK_ENTER, 0);<br> action = km.getAction(ks);<br> }<br> km.removeKeyStrokeBinding(ks);<br> }<br> }<br> });<br> }<br> public static void main(String args[]) {<br> GJApp.launch(new Test(), <br> "Default Buttons",300,300,350,200);<br> }<br> }<br> class GJApp extends WindowAdapter {<br> static private JPanel statusArea = new JPanel();<br> static private JLabel status = new JLabel(" ");<br> static private ResourceBundle resources;</p> <p> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h) {<br> launch(f,title,x,y,w,h,null); <br> }<br> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h,<br> String propertiesFilename) {<br> f.setTitle(title);<br> f.setBounds(x,y,w,h);<br> f.setVisible(true);</p> <p> statusArea.setBorder(BorderFactory.createEtchedBorder());<br> statusArea.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));<br> statusArea.add(status);<br> status.setHorizontalAlignment(JLabel.LEFT);</p> <p> f.setDefaultCloseOperation(<br> WindowConstants.DISPOSE_ON_CLOSE);</p> <p> if(propertiesFilename != null) {<br> resources = ResourceBundle.getBundle(<br> propertiesFilename, Locale.getDefault());<br> }</p> <p> f.addWindowListener(new WindowAdapter() {<br> public void windowClosed(WindowEvent e) {<br> System.exit(0);<br> }<br> });<br> }<br> static public JPanel getStatusArea() {<br> return statusArea;<br> }<br> static public void showStatus(String s) {<br> status.setText(s);<br> }<br> static Object getResource(String key) {<br> if(resources != null) {<br> return resources.getString(key);<br> }<br> return null;<br> }<br> }</p> <hr size="1" noshade> <p> 22.1.6 JTextField事件</p> <p> </p> <p> 22.1.7 JTextField类总结</p> <p> </p> <p> 22.1.8 AWT兼容</p> <p> </p> <p> 22.2 JPasswordField</p> <p> </p> <p align="center"><b>例22-6 使用JPasswordField</b></p> <hr size="1" noshade> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*;<br> import java.util.*; <p>public class Test extends JApplet {<br> private String pw = "dol42ce";<br> private JPasswordField passwordField = new JPasswordField(8);</p> <p> public void init() {<br> Container contentPane = getContentPane();<br> JPanel panel = new JPanel();</p> <p> panel.add(new JLabel("Password:"));<br> panel.add(passwordField);</p> <p> passwordField.setEchoChar('?');</p> <p> contentPane.add(panel, BorderLayout.CENTER);</p> <p> passwordField.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> String password = new String(<br> passwordField.getPassword());</p> <p> if(pw.equals(password))<br> showStatus("Access Granted");<br> else<br> showStatus("Wrong password - security " +<br> "has been called");<br> }<br> });<br> }<br> }</p> <hr size="1" noshade> <p> 22.2.1 JPasswordField组件总结</p> <p> </p> <p> 22.2.2 JPasswordField属性</p> <p> </p> <p> 22.2.3 JPasswordField类总结</p> <p> </p> <p> 22.3 JTextArea</p> <p> </p> <p align="center"><b>例22-7 指定JTExtArea的换行行为</b></p> <hr size="1" noshade> import java.awt.*;<br> import java.awt.event.*;<br> import javax.swing.*;<br> import javax.swing.text.*;<br> import java.io.FileReader; <p>public class Test extends JApplet {<br> private JTextArea textArea = new JTextArea();<br> private Container contentPane = getContentPane();</p> <p> public void init() {<br> readFile(textArea, "text");<br> contentPane.add(new ControlPanel(), BorderLayout.NORTH);<br> contentPane.add(new JScrollPane(textArea), <br> BorderLayout.CENTER);<br> }<br> private void readFile(JTextComponent textComponent,String s) {<br> try { (new DefaultEditorKit()).read(<br> new FileReader(s), textComponent.getDocument(), 0);<br> } catch(Exception ex) { ex.printStackTrace(); }<br> }<br> class ControlPanel extends JPanel { <br> JRadioButton radioButtons[] = new JRadioButton[] {<br> new JRadioButton("wrap off"),<br> new JRadioButton("wrap characters"),<br> new JRadioButton("wrap words"),<br> };</p> <p> public ControlPanel() {<br> ButtonGroup group = new ButtonGroup();<br> Listener listener = new Listener();</p> <p> for(int i=0; i < radioButtons.length; ++i) {<br> JRadioButton b = radioButtons[i];</p> <p> b.addActionListener(listener);<br> group.add(b);<br> add(b);</p> <p> if(i == 0) <br> b.setSelected(true); // "wrap off"<br> }<br> }<br> class Listener implements ActionListener {<br> public void actionPerformed(ActionEvent e) {<br> String action = e.getActionCommand();</p> <p> textArea.setLineWrap(!action.equals("wrap off"));<br> textArea.setWrapStyleWord(<br> action.equals("wrap words"));<br> //textArea.repaint();</p> <p> showStatus("rows: " + textArea.getRows() +<br> ", columns: " + textArea.getColumns() +<br> ", lines: " + textArea.getLineCount());</p> <p> }<br> };<br> }<br> }</p> <hr size="1" noshade> <p> 22.3.1 JTextArea组件总结</p> <p> </p> <p> 22.3.2 JTextArea属性</p> <p> </p> <p> 22.3.3 JTextArea类总结</p> <p> </p> <p> 22.3.4 AWT兼容</p> <p> </p> <p> 22.4 JEditorPane</p> <p> </p> <p align="center"><b>例22-8 用一个编辑器窗格来显示HTML文件</b></p> <hr size="1" noshade> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*;<br> import java.util.*; <p>public class Test extends JFrame {<br> private JEditorPane editorPane = new JEditorPane();</p> <p> public Test() {<br> Container contentPane = getContentPane();</p> <p> String url = "file:" + System.getProperty("user.dir") +<br> System.getProperty("file.separator") +<br> "java.util.Hashtable.html";</p> <p> editorPane.setEditable(false);</p> <p> try { <br> editorPane.setPage(url);<br> }<br> catch(Exception ex) { ex.printStackTrace(); }</p> <p> contentPane.add(new ControlPanel(), BorderLayout.NORTH);<br> contentPane.add(new JScrollPane(editorPane), <br> BorderLayout.CENTER);<br> }<br> class ControlPanel extends JPanel {<br> private JCheckBox edit = new JCheckBox("Editable");</p> <p> public ControlPanel() {<br> add(edit);<br> edit.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> editorPane.setEditable(edit.isSelected());<br> }<br> });<br> }<br> }<br> public static void main(String args[]) {<br> GJApp.launch(new Test(), <br> "JEditorPane",300,300,650,450);<br> }<br> }<br> class GJApp extends WindowAdapter {<br> static private JPanel statusArea = new JPanel();<br> static private JLabel status = new JLabel(" ");<br> static private ResourceBundle resources;</p> <p> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h) {<br> launch(f,title,x,y,w,h,null); <br> }<br> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h,<br> String propertiesFilename) {<br> f.setTitle(title);<br> f.setBounds(x,y,w,h);<br> f.setVisible(true);</p> <p> statusArea.setBorder(BorderFactory.createEtchedBorder());<br> statusArea.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));<br> statusArea.add(status);<br> status.setHorizontalAlignment(JLabel.LEFT);</p> <p> f.setDefaultCloseOperation(<br> WindowConstants.DISPOSE_ON_CLOSE);</p> <p> if(propertiesFilename != null) {<br> resources = ResourceBundle.getBundle(<br> propertiesFilename, Locale.getDefault());<br> }</p> <p> f.addWindowListener(new WindowAdapter() {<br> public void windowClosed(WindowEvent e) {<br> System.exit(0);<br> }<br> });<br> }<br> static public JPanel getStatusArea() {<br> return statusArea;<br> }<br> static public void showStatus(String s) {<br> status.setText(s);<br> }<br> static Object getResource(String key) {<br> if(resources != null) {<br> return resources.getString(key);<br> }<br> return null;<br> }<br> }</p> <hr size="1" noshade> <p> 22.4.1 JEditorPane属性</p> <p> </p> <p> 22.4.2 JEditorPane事件</p> <p> </p> <p align="center"><b>例22-9 用超链接监听器来装载URL</b></p> <hr size="1" noshade> import javax.swing.*;<br> import javax.swing.event.*;<br> import java.awt.*;<br> import java.awt.event.*;<br> import java.util.*;<br> import java.io.IOException; <p>public class Test extends JFrame {<br> private JEditorPane editorPane = new JEditorPane();</p> <p> public Test() {<br> Container contentPane = getContentPane();<br> String url = "file:" + System.getProperty("user.dir") +<br> System.getProperty("file.separator") +<br> "java.util.Hashtable.html";</p> <p> try { <br> editorPane.setPage(url);<br> }<br> catch(IOException ex) { ex.printStackTrace(); }</p> <p> contentPane.add(new JScrollPane(editorPane), <br> BorderLayout.CENTER);</p> <p> editorPane.setEditable(false);</p> <p> editorPane.addHyperlinkListener(new HyperlinkListener() {<br> public void hyperlinkUpdate(HyperlinkEvent e) {<br> try { <br> editorPane.setPage(e.getURL());<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -