swing:text_fields
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
swing:text_fields [2018/03/27 16:31] – gthanos | swing:text_fields [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Text Fields, Text Areas ====== | + | ====== Text Fields |
<WRAP info 70% round center> | <WRAP info 70% round center> | ||
Line 106: | Line 106: | ||
</ | </ | ||
- | ===== Document | + | ===== Η κλάση |
- | Κάθε component ή κάθε κατηγορία component | + | Τόσο τα **TextFields** όσο και τα **TextAreas** περιέχουν ένα αντικείμενο της |
+ | |||
+ | Οι μέθοδοι του interface | ||
<code java> | <code java> | ||
- | void changedUpdate(DocumentEvent e); | ||
//Gives notification that an attribute or set of attributes changed. | //Gives notification that an attribute or set of attributes changed. | ||
- | + | void changedUpdate(DocumentEvent e); | |
- | void insertUpdate(DocumentEvent e); | + | |
//Gives notification that there was an insert into the document. | //Gives notification that there was an insert into the document. | ||
- | + | void insertUpdate(DocumentEvent e); | |
- | void removeUpdate(DocumentEvent e); | + | |
//Gives notification that a portion of the document has been removed. | //Gives notification that a portion of the document has been removed. | ||
+ | void removeUpdate(DocumentEvent e); | ||
</ | </ | ||
+ | Μπορείτε να δείτε το παρακάτω παράδειγμα χρήσης [[http:// | ||
+ | |||
+ | <code java DocumentEventDemo.java> | ||
+ | import javax.swing.*; | ||
+ | import javax.swing.text.*; | ||
+ | import javax.swing.event.*; | ||
+ | |||
+ | import java.awt.Dimension; | ||
+ | import java.awt.BorderLayout; | ||
+ | import java.awt.GridBagLayout; | ||
+ | import java.awt.GridBagConstraints; | ||
+ | |||
+ | import java.awt.event.*; | ||
+ | |||
+ | public class DocumentEventDemo extends JPanel | ||
+ | | ||
+ | JTextField textField; | ||
+ | JTextArea textArea; | ||
+ | JTextArea displayArea; | ||
+ | |||
+ | public DocumentEventDemo() { | ||
+ | super(new GridBagLayout()); | ||
+ | GridBagLayout gridbag = (GridBagLayout)getLayout(); | ||
+ | GridBagConstraints c = new GridBagConstraints(); | ||
+ | |||
+ | JButton button = new JButton(" | ||
+ | button.addActionListener(this); | ||
+ | |||
+ | textField = new JTextField(20); | ||
+ | textField.addActionListener(new MyTextActionListener()); | ||
+ | textField.getDocument().addDocumentListener(new MyDocumentListener()); | ||
+ | textField.getDocument().putProperty(" | ||
+ | |||
+ | textArea = new JTextArea(); | ||
+ | textArea.getDocument().addDocumentListener(new MyDocumentListener()); | ||
+ | textArea.getDocument().putProperty(" | ||
+ | textArea.setLineWrap(true); | ||
+ | |||
+ | JScrollPane scrollPane = new JScrollPane(textArea); | ||
+ | scrollPane.setPreferredSize(new Dimension(200, | ||
+ | scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); | ||
+ | scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); | ||
+ | |||
+ | displayArea = new JTextArea(); | ||
+ | displayArea.setEditable(false); | ||
+ | JScrollPane displayScrollPane = new JScrollPane(displayArea); | ||
+ | displayScrollPane.setPreferredSize(new Dimension(200, | ||
+ | |||
+ | c.gridx = 0; | ||
+ | c.gridy = 0; | ||
+ | c.weightx = 1.0; | ||
+ | c.fill = GridBagConstraints.HORIZONTAL; | ||
+ | gridbag.setConstraints(textField, | ||
+ | add(textField); | ||
+ | |||
+ | c.gridx = 0; | ||
+ | c.gridy = 1; | ||
+ | c.weightx = 0.0; | ||
+ | c.gridheight = 2; | ||
+ | c.fill = GridBagConstraints.BOTH; | ||
+ | gridbag.setConstraints(scrollPane, | ||
+ | add(scrollPane); | ||
+ | |||
+ | c.gridx = 1; | ||
+ | c.gridy = 0; | ||
+ | c.weightx = 1.0; | ||
+ | c.weighty = 1.0; | ||
+ | gridbag.setConstraints(displayScrollPane, | ||
+ | add(displayScrollPane); | ||
+ | |||
+ | c.gridx = 1; | ||
+ | c.gridy = 2; | ||
+ | c.weightx = 0.0; | ||
+ | c.gridheight = 1; | ||
+ | c.weighty = 0.0; | ||
+ | c.fill = GridBagConstraints.HORIZONTAL; | ||
+ | gridbag.setConstraints(button, | ||
+ | add(button); | ||
+ | |||
+ | setPreferredSize(new Dimension(450, | ||
+ | setBorder(BorderFactory.createEmptyBorder(20, | ||
+ | } | ||
+ | |||
+ | class MyDocumentListener implements DocumentListener { | ||
+ | | ||
+ | public void insertUpdate(DocumentEvent e) { | ||
+ | updateLog(e, | ||
+ | } | ||
+ | public void removeUpdate(DocumentEvent e) { | ||
+ | updateLog(e, | ||
+ | } | ||
+ | public void changedUpdate(DocumentEvent e) { | ||
+ | //Plain text components don't fire these events. | ||
+ | } | ||
+ | |||
+ | public void updateLog(DocumentEvent e, String action) { | ||
+ | Document doc = (Document)e.getDocument(); | ||
+ | int changeLength = e.getLength(); | ||
+ | displayArea.append( | ||
+ | " | ||
+ | action + changeLength + " character" | ||
+ | ((changeLength == 1) ? " | ||
+ | " | ||
+ | displayArea.setCaretPosition(displayArea.getDocument().getLength()); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | class MyTextActionListener implements ActionListener { | ||
+ | /** Handle the text field Return. */ | ||
+ | public void actionPerformed(ActionEvent e) { | ||
+ | int selStart = textArea.getSelectionStart(); | ||
+ | int selEnd = textArea.getSelectionEnd(); | ||
+ | |||
+ | textArea.replaceRange(textField.getText(), | ||
+ | selStart, selEnd); | ||
+ | textField.selectAll(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** Handle button click. */ | ||
+ | public void actionPerformed(ActionEvent e) { | ||
+ | displayArea.setText("" | ||
+ | textField.requestFocus(); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Create the GUI and show it. For thread safety, | ||
+ | * this method should be invoked from the | ||
+ | * event-dispatching thread. | ||
+ | */ | ||
+ | private static void createAndShowGUI() { | ||
+ | //Create and set up the window. | ||
+ | JFrame frame = new JFrame(" | ||
+ | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
+ | |||
+ | //Create and set up the content pane. | ||
+ | JComponent newContentPane = new DocumentEventDemo(); | ||
+ | newContentPane.setOpaque(true); | ||
+ | frame.setContentPane(newContentPane); | ||
+ | |||
+ | //Display the window. | ||
+ | frame.pack(); | ||
+ | frame.setVisible(true); | ||
+ | } | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | //Schedule a job for the event-dispatching thread: | ||
+ | //creating and showing this application' | ||
+ | javax.swing.SwingUtilities.invokeLater(new Runnable() { | ||
+ | public void run() { | ||
+ | createAndShowGUI(); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | | Προηγούμενο: | ||
swing/text_fields.1522168315.txt.gz · Last modified: 2018/03/27 15:31 (external edit)