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

标签 java swing text resize

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

最佳答案

如果我正确理解您的问题,即您正在尝试调整某些标签类型文本的大小,您可以按照以下方式尝试:

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

关于java - 根据文本内容调整窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018406/

相关文章:

java - 可扩展 Java Web 应用程序中的连接池

java - 使用 RFC3696 进行电子邮件验证(电子邮件地址)

java - Swing X : a One keyword and several suggestions

在循环内使用子字符串函数时出现 Java.lang.OutOfMemory 错误

java - JTextfield 在键入时动态添加文本

java - 明显移动的 JProgressBar

flutter - Flutter文本小部件将中间的单词分解到下一行如何停止

OpenCV,非特定文本

iPhone:绘制旋转文本?

java - 如何使用java在不同机器上执行shell脚本