我希望能够输入将出现在窗口上的文本,然后如果我要重新调整窗口大小,那么文本可能会随着它的大小而改变。问题是我不完全确定如何实现它。因为我要写信给 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/