我目前正试图画出一个形状JPanel
,这是另一种内JPanel
,一个内JFrame
。
我搜索谷歌和YouTube发现了如何在中绘制形状JFrame
有一个面板,但没有发现任何能帮助我,我在做什么。 (也许我没有看到的东西)。
代码中,我迄今所看到的:
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);
}
这是当我处理的只是一个面板都不错,但我想一个面板,是我创建第1'面板内陈列的形状。
这是当我处理的只是一个面板都好,
你的代码贴优秀作品,因为机架采用BorderLayout的。 所以,当您将面板添加到帧的大小会增加,你的风俗画可以看出。
我想一个面板,其是我已经创建了第1'面板内的显示的形状。
当你创建一个面板是默认使用的FlowLayout。 当您添加自定义绘制面板,该面板将在其首选大小来显示,这将是(0,0),因为你没有指定首选尺寸。
在那些风俗画的面板也需要实现的getPreferredSize()方法,以便布局经理知道如何安排的面板。 例如:
public Dimension getPreferredSize()
{
return new Dimension(200, 200);
}
添加一个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);
}
这可以组件中的组件工作,如果你将其添加为子组件。 关键是要扩展组件,并覆盖你希望改变的方法。