This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
|
swing:jscrollpane [2018/03/27 20:45] gthanos [Παράδειγμα 2ο] |
swing:jscrollpane [2018/04/13 07:34] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Scroll Panes (Scroll Bars) ===== | ||
| - | Όταν ορίζετε ένα text area ορίζετε ένα ελάχιστο εύρος γραμμών και στηλών στις οποίες εκτείνεται το συγκεκριμένο text area, π.χ. | ||
| - | <code java> | ||
| - | JTextArea textArea = new JTextArea(NUMBER_OF_ROWS, | ||
| - | </ | ||
| - | Ο χρήστης μπορεί να εισάγει κείμενο που εκτείνεται έξω από τα παραπάνω όρια. Εάν δεν έχετε ορίσει την ιδιότητα της αναδίπλωσης γραμμών στο text area, το κείμενο που βρίσκεται εκτός των παραπάνω ορίων μπορεί να φανεί μόνο αν ορίσετε | ||
| - | |||
| - | Scroll bars ορίζονται από το component [[http:// | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | Για να ορίσετε ένα text area μέσα σε ένα JScrollPane απαιτείται μία δήλωση της μορφής | ||
| - | <code java> | ||
| - | JScrollPane scolledTextArea = new JScrollPane(textArea); | ||
| - | </ | ||
| - | |||
| - | Σε κάθε JScrollPane object ορίζεται την συμπεριφορά του οριζόντιου ScrollBar από την παρακάτω μέθοδο οι οποία λαμβάνει ως ορίσματα τις τιμές που ακολουθούν. | ||
| - | <code java> | ||
| - | public void setHorizontalScrollBarPolicy(int policy) | ||
| - | |||
| - | // επιτρεπόμενες τιμές | ||
| - | JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS | ||
| - | JScrollPane.HORIZONTAL_SCROLLBAR_NEVER | ||
| - | JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED | ||
| - | </ | ||
| - | |||
| - | Αντίστοιχα για το κάθετο ScrollBar | ||
| - | <code java> | ||
| - | public void setVerticalScrollBarPolicy(int policy) | ||
| - | |||
| - | // επιτρεπόμενες τιμές | ||
| - | JScrollPane.VERTICAL_SCROLLBAR_ALWAYS | ||
| - | JScrollPane.VERTICAL_SCROLLBAR_NEVER | ||
| - | JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED | ||
| - | </ | ||
| - | |||
| - | ===== Παραδείγματα ===== | ||
| - | |||
| - | ==== Παράδειγμα 1ο ==== | ||
| - | |||
| - | Ένα παράδειγμα χρήστης των παραπάνω components δίνεται παρακάτω: | ||
| - | <code java TextComponentsDemo.java> | ||
| - | import java.awt.*; | ||
| - | import java.awt.event.*; | ||
| - | import javax.swing.*; | ||
| - | |||
| - | public class TextComponentsDemo { | ||
| - | |||
| - | JFrame frame; | ||
| - | JTextField textField; | ||
| - | JPasswordField passwdField; | ||
| - | JLabel msgLabel; | ||
| - | JTextArea textArea; | ||
| - | JCheckBox textFieldCheck, | ||
| - | | ||
| - | public TextComponentsDemo() { | ||
| - | frame = new JFrame(" | ||
| - | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
| - | JPanel framePanel = new JPanel(); | ||
| - | framePanel.setLayout(new BoxLayout(framePanel, | ||
| - | frame.setContentPane(framePanel); | ||
| - | JPanel textFieldPanel = new JPanel(new GridLayout(3, | ||
| - | framePanel.add(textFieldPanel); | ||
| - | textField = new JTextField(15); | ||
| - | textField.addActionListener( new ActionListener() { | ||
| - | public void actionPerformed(ActionEvent e) { | ||
| - | textArea.setText(textArea.getText()+(textArea.getText().isEmpty()?"":" | ||
| - | textField.setText("" | ||
| - | } | ||
| - | }); | ||
| - | textFieldPanel.add(new JLabel(" | ||
| - | textFieldPanel.add(textField); | ||
| - | textFieldCheck = new JCheckBox(" | ||
| - | textFieldCheck.addItemListener(new ItemListener() { | ||
| - | public void itemStateChanged(ItemEvent e) { | ||
| - | if(e.getStateChange() == ItemEvent.SELECTED) | ||
| - | textField.setEditable(true); | ||
| - | else | ||
| - | textField.setEditable(false); | ||
| - | } | ||
| - | }); | ||
| - | textFieldPanel.add(textFieldCheck); | ||
| - | | ||
| - | textFieldPanel.add(new JLabel(" | ||
| - | passwdField = new JPasswordField(); | ||
| - | textFieldPanel.add(passwdField); | ||
| - | passwdFieldCheck = new JCheckBox(" | ||
| - | passwdFieldCheck.addItemListener(new ItemListener() { | ||
| - | public void itemStateChanged(ItemEvent e) { | ||
| - | if(e.getStateChange() == ItemEvent.SELECTED) | ||
| - | passwdField.setEditable(true); | ||
| - | else | ||
| - | passwdField.setEditable(false); | ||
| - | } | ||
| - | }); | ||
| - | textFieldPanel.add(passwdFieldCheck); | ||
| - | | ||
| - | msgLabel = new JLabel(" | ||
| - | textFieldPanel.add(msgLabel); | ||
| - | | ||
| - | String []font = {" | ||
| - | JComboBox< | ||
| - | fontCombo.addActionListener( new ActionListener() { | ||
| - | public void actionPerformed(ActionEvent e) { | ||
| - | String option = font[fontCombo.getSelectedIndex()]; | ||
| - | textArea.setFont(new Font(option, | ||
| - | } | ||
| - | }); | ||
| - | | ||
| - | | ||
| - | String []fontColor = { " | ||
| - | JComboBox< | ||
| - | fontColorCombo.addActionListener( new ActionListener() { | ||
| - | public void actionPerformed(ActionEvent e) { | ||
| - | Color c; | ||
| - | switch(fontColorCombo.getSelectedIndex()) { | ||
| - | case 0: | ||
| - | c = Color.RED; | ||
| - | break; | ||
| - | case 1: | ||
| - | c = Color.BLUE; | ||
| - | break; | ||
| - | case 2: | ||
| - | c = Color.CYAN; | ||
| - | break; | ||
| - | case 3: | ||
| - | c = Color.DARK_GRAY; | ||
| - | break; | ||
| - | default: | ||
| - | c = Color.YELLOW; | ||
| - | } | ||
| - | textArea.setForeground(c); | ||
| - | } | ||
| - | }); | ||
| - | textFieldPanel.add(fontCombo); | ||
| - | textFieldPanel.add(fontColorCombo); | ||
| - | | ||
| - | textArea = new JTextArea(10, | ||
| - | // | ||
| - | textArea.setFont(new Font(" | ||
| - | textArea.setForeground(new Color(250, 30, 30)); | ||
| - | framePanel.add(textArea); | ||
| - | | ||
| - | frame.pack(); | ||
| - | frame.setVisible(true); | ||
| - | } | ||
| - | | ||
| - | public static void main(String []args) { | ||
| - | javax.swing.SwingUtilities.invokeLater( new Runnable() { | ||
| - | public void run() { | ||
| - | new TextComponentsDemo(); | ||
| - | } | ||
| - | }); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | <WRAP tip 80% center round> | ||
| - | Παρατηρήστε ότι μπορείτε να χρησιμοποιήσετε έναν [[https:// | ||
| - | </ | ||
| - | |||
| - | ==== Παράδειγμα 2ο ==== | ||
| - | |||
| - | Το 2ο παράδειγμα είναι από το βιβλίο του Savitch. | ||
| - | <code java ScrollBarDemo.java> | ||
| - | import javax.swing.*; | ||
| - | import java.awt.*; | ||
| - | import java.awt.event.*; | ||
| - | |||
| - | public class ScrollBarDemo extends JFrame implements ActionListener { | ||
| - | public static final int WIDTH = 600; | ||
| - | public static final int HEIGHT = 400; | ||
| - | public static final int LINES = 15; | ||
| - | public static final int CHAR_PER_LINE = 30; | ||
| - | private JTextArea memoDisplay; | ||
| - | private String memo1; | ||
| - | private String memo2; | ||
| - | |||
| - | public static void main(String[] args) { | ||
| - | ScrollBarDemo gui = new ScrollBarDemo(); | ||
| - | gui.setVisible(true); | ||
| - | } | ||
| - | | ||
| - | public ScrollBarDemo() { | ||
| - | super(" | ||
| - | setSize(WIDTH, | ||
| - | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
| - | JPanel buttonPanel = new JPanel(); | ||
| - | buttonPanel.setBackground(Color.LIGHT_GRAY); | ||
| - | buttonPanel.setLayout(new FlowLayout()); | ||
| - | JButton memo1Button = new JButton(" | ||
| - | memo1Button.addActionListener(this); | ||
| - | buttonPanel.add(memo1Button); | ||
| - | JButton memo2Button = new JButton(" | ||
| - | memo2Button.addActionListener(this); | ||
| - | buttonPanel.add(memo2Button); | ||
| - | JButton clearButton = new JButton(" | ||
| - | clearButton.addActionListener(this); | ||
| - | buttonPanel.add(clearButton); | ||
| - | JButton get1Button = new JButton(" | ||
| - | get1Button.addActionListener(this); | ||
| - | buttonPanel.add(get1Button); | ||
| - | JButton get2Button = new JButton(" | ||
| - | get2Button.addActionListener(this); | ||
| - | buttonPanel.add(get2Button); | ||
| - | add(buttonPanel, | ||
| - | JPanel textPanel = new JPanel(); | ||
| - | textPanel.setBackground(Color.BLUE); | ||
| - | |||
| - | memoDisplay = new JTextArea(LINES, | ||
| - | memoDisplay.setBackground(Color.WHITE); | ||
| - | JScrollPane scrolledText = new JScrollPane(memoDisplay); | ||
| - | scrolledText.setHorizontalScrollBarPolicy( | ||
| - | JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); | ||
| - | scrolledText.setVerticalScrollBarPolicy( | ||
| - | JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); | ||
| - | textPanel.add(scrolledText); | ||
| - | add(textPanel, | ||
| - | } | ||
| - | | ||
| - | public void actionPerformed(ActionEvent e) { | ||
| - | String actionCommand = e.getActionCommand(); | ||
| - | if (actionCommand.equals(" | ||
| - | memo1 = memoDisplay.getText(); | ||
| - | else if (actionCommand.equals(" | ||
| - | memo2 = memoDisplay.getText(); | ||
| - | else if (actionCommand.equals(" | ||
| - | memoDisplay.setText("" | ||
| - | else if (actionCommand.equals(" | ||
| - | memoDisplay.setText(memo1); | ||
| - | else if (actionCommand.equals(" | ||
| - | memoDisplay.setText(memo2); | ||
| - | else | ||
| - | memoDisplay.setText(" | ||
| - | } | ||
| - | | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | | Προηγούμενο: | ||