изменить размер окна на основе текстового содержимого - PullRequest
2 голосов
/ 11 августа 2011

Я хочу иметь возможность вводить текст, который будет отображаться в окне, а затем, если бы мне пришлось изменить размер окна, текст мог бы меняться в зависимости от его размера. Проблема в том, что я не совсем уверен, как это реализовать. Поскольку я буду писать в Jpanel, я думаю, что мне придется использовать Jlabel для добавления текста в окно, но тогда изменение размера окна может не повлиять на Jlabel? Должен ли я как-то напрямую написать на Jpanel или получить размер окна (длину и ширину) и использовать его для увеличения или уменьшения размера текста? Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Если я правильно понимаю ваш вопрос о том, что вы пытаетесь изменить размер текста типа ярлыка, вы можете попробовать что-то вроде этого:

public class ResizeTextTest extends JFrame{
public ResizeTextTest() {
    add(new MyPanel());
}

public static void main(String[] args) {
    ResizeTextTest t = new ResizeTextTest();
    t.setSize(400,300);
    t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    t.setVisible(true);
}
class MyPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        //Using a multiplier like this on the width and height of the
        //Panel will give you a text size that correlates with the size
        //of the window.
        Font f = new Font("Arial", Font.PLAIN, 
                (int) (.0005 * this.getWidth() * this.getHeight()));
        g.setFont(f);
        g.drawString("Hello World", 50, 100);

    }
}

Метод paintComponent автоматически вызывается при изменении размера окна. Вы также можете вызвать его явно, используя метод repaint () компонента.

1 голос
/ 11 августа 2011

Используйте текстовую область , а не метку. Убедитесь, что свойство 'line wrap' выбрано / true.

...