我是 Java 新手,所以我正在尝试一些东西。
我正在玩 Java 布局,特别是使用 BorderLayout 的嵌套面板。
我遇到的问题是我无法绘制到嵌套面板。我可以绘制到主面板,但不能绘制嵌套在其中的面板。
如果您能告诉我哪里出错了,我将非常感激。
这是我的主要代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GUI extends JFrame{
public GUI()
{
setSize(600,600);
这是主面板。
JPanel pan1 = new JPanel();
pan1.setLayout(new BorderLayout());
pan1.setPreferredSize(new Dimension(200,200));
JLabel label = new JLabel("Panel 1");
pan1.add(label);
然后我创建了两个嵌套面板,我将它们添加到主面板中。
JPanel pan2 = new JPanel();
pan2.setBackground(Color.YELLOW);
pan2.setPreferredSize(new Dimension(200,200));
JPanel pan3 = new JPanel();
pan3.setBackground(Color.YELLOW);
pan3.setPreferredSize(new Dimension(200,200));
这是我调用在屏幕上绘制形状的类的地方。
draw drawingShape = new draw();
这是问题,因为我无法将形状绘制到嵌套面板。
pan2.add(drawingShape);
但是我可以把它画到这个主要的面板上。
pan1.add(drawingShape);
我将两个面板插入主面板。pan1.add(pan2, BorderLayout.NORTH); pan1.add(pan3, BorderLayout.SOUTH);
getContentPane().add(pan1);
setVisible(true);
}
public static void main(String args[])
{
new GUI();
}
}
这是创建完全可以的形状的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
public class draw extends JPanel{
public void paint(Graphics g) {
Image img = createImage();
g.drawImage(img, 20,20,this);
}
private Image createImage(){
BufferedImage bufferedImage = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.getGraphics();
return bufferedImage;
}
}
代码确实编译,我感谢任何帮助。
问候