如何在 JPanel 中自动调整绘图大小?
how to do auto-resizing drawings in JPanel?
让 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);
}
}
每当调整框架大小时自动调整大小。
frame.getContentPane().setLayout(new BorderLayout());
在将组件添加到 GUI 之前插入该行。
你应该研究layoutmanagers,因为它是Java中的一个独特概念。
按面板宽度和高度的比例提供位置和大小。每当调整面板大小时,渲染引擎将安排对 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);
}
}
让 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);
}
}
每当调整框架大小时自动调整大小。
frame.getContentPane().setLayout(new BorderLayout());
在将组件添加到 GUI 之前插入该行。
你应该研究layoutmanagers,因为它是Java中的一个独特概念。
按面板宽度和高度的比例提供位置和大小。每当调整面板大小时,渲染引擎将安排对 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);
}
}