Java 如何在另一个JPanel中的JPanel上绘制形状?
我目前正在尝试在一个JPanel上绘制形状,它在另一个JPanel中,在JFrame中 我搜索了谷歌和Youtube,找到了如何在一个只有一个面板的JFrame中绘制形状,但没有找到任何东西可以帮助我做什么。也许我没看到什么 到目前为止我看到的代码:Java 如何在另一个JPanel中的JPanel上绘制形状?,java,swing,jpanel,java-2d,paintcomponent,Java,Swing,Jpanel,Java 2d,Paintcomponent,我目前正在尝试在一个JPanel上绘制形状,它在另一个JPanel中,在JFrame中 我搜索了谷歌和Youtube,找到了如何在一个只有一个面板的JFrame中绘制形状,但没有找到任何东西可以帮助我做什么。也许我没看到什么 到目前为止我看到的代码: public class GameScreen { public void paintComponent(Graphics g) { super.paintComponent(g); g.setCo
public class GameScreen
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.red);
g.drawRect(100, 10, 30, 40);
}
public static void main(String[] args)
{
GameScreen gs = new GameScreen();
JFrame f = new JFrame();
f.setTitle("");
f.setSize(400,400);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(gs);
}
当我只处理一个面板时,这一切都很好,但我想在我创建的第一个面板中的面板上显示形状。以与现在相同的方式将JPanel添加到JFrame中,但使用您自己的JPanel子类来执行
class MyPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawRect(100, 10, 30, 40);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(400,400); // As suggested by camickr
}
}
您可以将其添加到JFrame中的JPanel中
public static void main(String[] args)
{
MyPanel mp = new MyPanel();
JPanel jp = new JPanel();
jp.add(mp);
JFrame f = new JFrame();
f.setTitle("");
f.setSize(400,400);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(jp);
}
如果将组件作为子组件添加,则这适用于组件中的组件。关键是扩展组件并覆盖您希望更改的方法。以与现在相同的方式将JPanel添加到JFrame中,但使用您自己的JPanel子类来完成
class MyPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawRect(100, 10, 30, 40);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(400,400); // As suggested by camickr
}
}
您可以将其添加到JFrame中的JPanel中
public static void main(String[] args)
{
MyPanel mp = new MyPanel();
JPanel jp = new JPanel();
jp.add(mp);
JFrame f = new JFrame();
f.setTitle("");
f.setSize(400,400);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(jp);
}
如果将组件作为子组件添加,则这适用于组件中的组件。关键是扩展组件并覆盖要更改的方法
当我只处理一个面板时,这一切都很好
您发布的代码工作正常,因为框架使用了边框布局。因此,当您将面板添加到框架时,它的大小将增加,并且您的自定义绘画将被看到
我想在我创建的第一个面板中的面板上显示形状
创建面板时,默认情况下使用FlowLayout。将自定义绘制面板添加到该面板时,它将以其首选大小显示,该大小将为0,0,因为您没有指定首选大小
在进行自定义绘制的面板上,还需要实现getPreferredSize方法,以便布局管理器知道如何排列面板。例如:
public Dimension getPreferredSize()
{
return new Dimension(200, 200);
}
当我只处理一个面板时,这一切都很好
您发布的代码工作正常,因为框架使用了边框布局。因此,当您将面板添加到框架时,它的大小将增加,并且您的自定义绘画将被看到
我想在我创建的第一个面板中的面板上显示形状
创建面板时,默认情况下使用FlowLayout。将自定义绘制面板添加到该面板时,它将以其首选大小显示,该大小将为0,0,因为您没有指定首选大小
在进行自定义绘制的面板上,还需要实现getPreferredSize方法,以便布局管理器知道如何排列面板。例如:
public Dimension getPreferredSize()
{
return new Dimension(200, 200);
}
无法获取您的问题..如果您想在一个面板中绘制许多形状,请通过继承JPanel创建自己的面板,并重写其paintComponent方法,并在该面板中绘制尽可能多的形状..无法获取您的问题..如果您想在一个面板中绘制许多形状,请通过继承JPanel和创建自己的面板覆盖其paintComponent方法,并在该面板中绘制尽可能多的形状。。