dimanche 24 mai 2015

ScrollPane

Hallo
Ich arbeite mich gerade in die Erstellung von Java GUIs ein. Dabei habe ich ein Programm geschrieben, welches einen Pfad als String und einen regulären Ausdruck übergeben bekommt und den Pfad samt Unterverzeichnisse nach Dateien, deren Namen dem regulären Ausdruck entsprechen durchsucht. Die Ergebnisse werden als kompletten Pfad ausgegeben.
Dazu wollte ich jetzt eine einfache grafische Oberfläche basteln.
Ganz oben befindet sich ein Textfeld in dem der Pfad und der reguläre Ausdruck eingegeben werden. Darunter befindet sich ein Knopf mit der Aufschrift Start. Durch Klicken des Knopfes beginnt die Suche.
Unter dem Knopf befindet sich eine große nicht editierbare Textfläche in der die Ergebnisse zeilenweise aufgelistet werden. In großen Ordnern ist die Liste solang, dass die Ergebnisse nicht alle in die Fläche passen, weshalb ich eine Scrollbar hinzufügen wollte.
Das Problem ist aber, dass die Scrollbar sich nicht dem Text in der Textfläche anpasst.
Gibt es vielleicht eine Methode mit der man die Scrollbar aktualisiert?

Hier ist mein Code

Java Code:

  1. import javax.swing.JButton;
  2. import javax.swing.JFrame;
  3. import javax.swing.JPanel;
  4. import javax.swing.JScrollPane;
  5. import javax.swing.JTextArea;
  6. import javax.swing.JTextField;
  7. import javax.swing.ScrollPaneConstants;
  8.  
  9.  
  10. import java.awt.BorderLayout;
  11. import java.awt.Dimension;
  12. import java.awt.Label;
  13. import java.awt.TextField;
  14. import java.awt.event.ActionEvent;
  15. import java.awt.event.ActionListener;
  16. import java.io.File;
  17. import java.io.FileNotFoundException;
  18. import java.util.LinkedList;
  19. import java.util.List;
  20.  
  21.  
  22.  
  23.  
  24. public class LayoutSuche extends JFrame{
  25. private JTextField path;
  26. private JTextArea display;
  27. private JButton start;
  28. private JScrollPane scroll;
  29.  
  30. public LayoutSuche(){
  31. initialize();
  32. }
  33.  
  34. private void initialize(){
  35. setTitle("Suche");
  36. setSize(1600, 700);
  37. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  38. setLayout(null);
  39.  
  40. path=new JTextField();
  41. path.setBounds(0, 0, 1355, 30);
  42.  
  43. display=new JTextArea();
  44. display.setEditable(false);
  45. display.setPreferredSize(new Dimension(30, 600));
  46.  
  47. start=new JButton("Start");
  48. start.addActionListener(new ActionListener(){
  49.  
  50.  
  51. @Override
  52. public void actionPerformed(ActionEvent e) {
  53. display.setText("");
  54. LinkedList<File> results;
  55. String[] s={path.getText().split(" ")[0], path.getText().split(" ")[1]};
  56. Sucher sucher=new Sucher(s[0]);
  57. results=sucher.suche(sucher.f, s[1]);
  58. for(int i=0; i<results.size(); i++)
  59. display.append(results.get(i).getPath()+" \n");
  60. }
  61. });
  62. start.setBounds(600, 50, 100, 30);
  63.  
  64. scroll=new JScrollPane(display, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
  65. ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
  66. scroll.setBounds(0, 100, 1355, 560);
  67.  
  68. this.getContentPane().add(path);
  69. this.getContentPane().add(start);
  70. this.getContentPane().add(scroll);
  71.  
  72. setVisible(true);
  73. }
  74.  
  75.  
  76. }


ScrollPane

0 commentaires:

Enregistrer un commentaire