我如何在 JFrame 中居中绘制的东西?
How do I center drawn things in JFrame?
我正在尝试将用 JFrame
和 Color
绘制的椭圆居中,但我不知道该怎么做。
我知道我可以使用 Jframe#width()
获取宽度,但我不知道如何在方法 paintComponent
中执行此操作,我在其中绘制了我的圆圈。如果我将参数添加到方法,JFrame 它不起作用。
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
public class AU19b extends JPanel{
protected void paintComponent(Graphics g){
g.setColor(Color.RED);
g.drawOval(10,10, 50, 50);
}
public static void main(String[] args){
JFrame f = new JFrame("Sebastians GUI");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 250);
f.add(new AU19b());
f.setVisible(true);
}
}
用它来画一个半径为 50 的圆。
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
public class AU19b extends JPanel{
@Override
public void paintComponent(Graphics g){
g.setColor(Color.RED);
int radius = 50;
g.drawOval(getWidth()/2 - radius,getHeight()/2 - radius, 2*radius, 2*radius);
}
public static void main(String[] args){
JFrame f = new JFrame("Sebastians GUI");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 250);
f.add(new AU19b());
f.setVisible(true);
}
}
我正在尝试将用 JFrame
和 Color
绘制的椭圆居中,但我不知道该怎么做。
我知道我可以使用 Jframe#width()
获取宽度,但我不知道如何在方法 paintComponent
中执行此操作,我在其中绘制了我的圆圈。如果我将参数添加到方法,JFrame 它不起作用。
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
public class AU19b extends JPanel{
protected void paintComponent(Graphics g){
g.setColor(Color.RED);
g.drawOval(10,10, 50, 50);
}
public static void main(String[] args){
JFrame f = new JFrame("Sebastians GUI");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 250);
f.add(new AU19b());
f.setVisible(true);
}
}
用它来画一个半径为 50 的圆。
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
public class AU19b extends JPanel{
@Override
public void paintComponent(Graphics g){
g.setColor(Color.RED);
int radius = 50;
g.drawOval(getWidth()/2 - radius,getHeight()/2 - radius, 2*radius, 2*radius);
}
public static void main(String[] args){
JFrame f = new JFrame("Sebastians GUI");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 250);
f.add(new AU19b());
f.setVisible(true);
}
}