根据文本内容调整窗口大小

时间:2011-08-10 22:00:11

标签: java swing text resize

我希望能够输入将出现在窗口上的文本然后如果我要重新调整窗口大小,那么文本可能会随着其大小而改变。问题是我不完全确定如何实现这一点。因为我要写Jpanel,我想我必须使用Jlabel将文本添加到窗口,但是然后调整窗口大小可能不会影响Jlabel?我想是以某种方式直接在Jpanel上写,或者获取窗口的大小(长度和宽度)并使用它来增加或减少文本的大小?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用text area,而不是标签。确保选中/ true为'换行'属性。

答案 1 :(得分:1)

如果我正确理解你的问题,你试图重新调整一些标签类型的文字大小,你可以尝试这些方法:

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()方法显式调用它。