我目前正在尝试在一个 JPanel
上绘制形状,它在另一个 JPanel
中,在一个 JFrame
中。
我搜索了 Google 和 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);
}
当我只处理一个面板时,这一切都很好,但我想在我创建的第一个面板内的面板上显示形状。
最佳答案
以与现在相同的方式将 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);
}
如果您将它们添加为子组件,这适用于组件内的组件。关键是扩展组件并覆盖您希望更改的方法。
关于java - 如何在位于另一个 JPanel 中的 JPanel 上绘制形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15733835/