Как да промените позицията на текста в JTextArea

Обикновено в JTextArea текстът започва в горния ляв ъгъл. Искам да е в долния ляв ъгъл. Как можете да направите това?

въведете описание на изображението тук

(извинявам се, ако почеркът ми е нечетлив)


person cvbattum    schedule 28.05.2013    source източник
comment
+1 за ръчно рисуваните диаграми.   -  person W.K.S    schedule 28.05.2013
comment
като просто решение: пребройте броя на редовете, запълнете зоната за почивка с празни редове   -  person maks    schedule 28.05.2013


Отговори (1)


Можете да закотвите JTextArea към местоположението BorderLayout.PAGE_END на контейнер и да позволите на текста да се превърта нагоре.

Удивително базово приложение JTextArea

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;
            }
        });
    }
}
person Reimeus    schedule 28.05.2013
comment
BorderLayout.SOUTH от textArea в JPanel ли променя позиционирането на текста? - person cvbattum; 29.05.2013
comment
В Ubuntu, textArea.getBackground() връща фоновия цвят на своя родител, правейки цветовете различни: много светло сив панел и бяла текстова област. - person Lone nebula; 29.05.2013
comment
@Lonenebula В този случай използвайте UIManager.getColor("TextArea.background") - person Reimeus; 29.05.2013
comment
@Creator13 Дайте на JScrollPane предпочитан размер вместо на панела JTextArea. Вижте актуализация - person Reimeus; 29.05.2013