2017-06-23 1 views
0

Ich habe einen Code für die Bildlaufleiste hinzugefügt, den ich von Fragen erhalten habe, die von anderen Benutzern auf stackoverflow gestellt wurden, aber ich bekomme keine Bildlaufleiste zu meiner JTextArea hinzugefügt. Ich möchte scrollbar JTextArea Bereich2 in f2 Rahmen hinzufügen.Bildlaufleiste wird nicht angezeigt

import javax.swing.*; 
import java.io.*; 
import java.awt.event.*; 
public class TextAreaExample implements ActionListener { 
    JFrame f1 = new JFrame("INPUT WINDOW"); 
    JFrame f2 = new JFrame("FILE DATA OUTPUT"); 
    JTextArea area1; 
    JTextArea area2; 
    JButton b; 
    TextAreaExample() { 
     area1 = new JTextArea(); 
     area2 = new JTextArea(); 
     JScrollPane scroll = new JScrollPane (area2, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
     b = new JButton("click Me"); 
     b.setBounds(100, 95, 80, 30); 
     f1.add(b); 

     area1.setBounds(10, 30, 200, 60); 
     area2.setBounds(5, 5, 480, 480); 
     f1.add(area1); 
     f2.add(area2); 
     f2.add(scroll); 
     f1.setSize(300,140); 
     f2.setSize(510, 510); 
     f1.setLayout(null); 
     f2.setLayout(null); 
     f1.setVisible(true); 
     f2.setVisible(true); 
     b.addActionListener(this); 
     f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
    public void actionPerformed(ActionEvent e) { 
     if(e.getSource() == b) { 
      String s1 = area1.getText(); 

      String s2 = ""; 
      try { 
       FileInputStream fin = new FileInputStream(s1); 
       BufferedInputStream bin = new BufferedInputStream(fin); 
       int i; 
       while((i = bin.read()) != -1) { 
        s2 = s2 + (char)i; 
       } 
       bin.close(); 
       fin.close(); 
      }catch(Exception a) { 
       System.out.println(a); 
      } 
      area2.setText(s2); 
     } 
    } 
    public static void main(String args[]) { 
     new TextAreaExample(); 

    } 
} 

Antwort

3
JScrollPane scroll = new JScrollPane (area2, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
    b = new JButton("click Me"); 
    b.setBounds(100, 95, 80, 30); 
    f1.add(b); 

    area1.setBounds(10, 30, 200, 60); 
    area2.setBounds(5, 5, 480, 480); 
    f1.add(area1); 
    f2.add(area2); 

Zuerst erstellen Sie eine JScrollPane die JTextArea als Parameter verwendet wird, was richtig ist.

Aber dann fügen Sie dem Rahmen den Textbereich hinzu, der falsch ist. Swing-Komponenten können nur ein einziges übergeordnetes Element haben, sodass der Textbereich aus dem Bildlaufbereich entfernt wird.

Der Bildlaufbereich muss zum Bild hinzugefügt werden.

f1.add(scroll); 

Auch loswerden alle Null-Layouts und setBounds() -Anweisungen. Swing wurde für die Verwendung mit Layout-Managern entwickelt. Lesen Sie den Abschnitt aus dem Swing-Tutorial unter Layout Manager, um weitere Informationen und Beispiele zu erhalten. Jetzt

, wenn Sie den Textbereich erstellen, können Sie verwenden:

JTextArea textArea = new JTextArea(5, 20); 

die Originalgröße für den Textbereich vorzuschlagen. Bildlaufleisten werden angezeigt, wenn mehr als 5 Datenzeilen hinzugefügt werden.

+0

Ok, jetzt funktioniert es, wie ich wollte, danke. –

Verwandte Themen