gpt4 book ai didi

java - 如何在 JPanel 中自动调整绘图大小?

转载 作者:行者123 更新时间:2023-11-30 01:56:46 29 4
gpt4 key购买 nike

在 JPanel 中绘制图形,只要用户调整 JFrame 的大小,该图形就会调整大小,最简单的方法是什么?

我知道我可以使用 BorderLayout 自动调整面板大小,但在这种情况下绘图不会调整大小。我是 java 和 GUI 编程新手,可能有很多解决方案。

请给我一个提示,让我知道正确的方向,例如

中的矩形
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.*;

public class DrawRect extends JPanel {

@Override
protected void paintComponent(Graphics g) {
g.drawRect(20, 20, 100, 100);
}


public static void main(String[] args) {
JFrame frame = new JFrame();
DrawRect panel = new DrawRect();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(200, 200));
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}

每当调整框架大小时自动调整大小。

最佳答案

按照面板宽度和高度的比例提供位置和尺寸。每当调整面板大小时,渲染引擎都会调用 paintComponent() 方法,并且将按比例绘制矩形。例如

import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.*;

public class DrawRect extends JPanel {

@Override
protected void paintComponent(Graphics g) {
int w = getWidth();
int h = getHeight();
g.drawRect(w/10, h/10, w/2, h/2);
}

/* A custom component should give the layout manager hints as to
its preferred size. */
@Override
public Dimension getPreferredSize() {
return new Dimension(200,200);
}

public static void main(String[] args) {
JFrame frame = new JFrame();
DrawRect panel = new DrawRect();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}

关于java - 如何在 JPanel 中自动调整绘图大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54182585/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com