2013-05-28 22 views
5

Zazwyczaj w JTextArea tekst zaczyna się w lewym górnym rogu. Chcę, żeby był w lewym dolnym rogu. Jak możesz to robić?Jak zmienić pozycję tekstu w JTextArea

enter image description here

(przepraszam, jeśli moje pismo jest nieczytelne)

+4

+1 dla rysowane ręcznie diagramów. –

+0

jako prosta decyzja: policz liczbę linii, wypełnij obszar odpoczynku pustymi liniami – maks

Odpowiedz

6

Można zakotwiczyć JTextArea do BorderLayout.PAGE_END umieszczeniem pojemnika i pozwolić, aby przewinąć tekst w górę.

Amazing Base JTextArea Application

public class BaseTextAreaDemo { 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       final JFrame frame = new JFrame("Base JTextArea App"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       JPanel textAreaPanel = getBaseTextArea(); 
       JScrollPane scrollPane = new JScrollPane(textAreaPanel) { 
        @Override 
        public Dimension getPreferredSize() { 
         return new Dimension(300, 230); 
        } 
       }; 

       frame.add(scrollPane); 
       frame.pack(); 
       frame.setLocationByPlatform(true); 
       frame.setVisible(true); 
      } 

      private JPanel getBaseTextArea() { 
       JTextArea textArea = new JTextArea(); 
       textArea.setLineWrap(true); 
       textArea.setWrapStyleWord(true); 
       textArea.append("bla bla bla\n"); 
       textArea.append("new text here"); 
       JPanel panel = new JPanel(new BorderLayout()); 
       panel.setBackground(textArea.getBackground()); 
       panel.setBorder(textArea.getBorder()); 
       textArea.setBorder(null); 
       panel.add(textArea, BorderLayout.PAGE_END); 

       return panel; 
      } 
     }); 
    } 
} 
+0

Czy to "BorderLayout.SOUTH" z textArea w JPanel zmienia pozycję tekstu? – Creator13

+0

Tak. zaktualizowałem z wyjaśnieniem – Reimeus

+0

W Ubuntu, ['textArea.getBackground()'] (http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#getBackground()) zwraca jego kolor tła rodzica, dzięki czemu kolory są różne: bardzo jasny szary panel i biały obszar tekstu. –