【发布时间】:2014-08-21 20:42:38
【问题描述】:
我在一帧中混合了两个JPanels,它给了我这个输出!
这是我添加两个 JPanel 的代码:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
import java.util.*;
public class Board extends JFrame{
private int width=500;
private int height=450;
Obstacles asd= new Obstacles();
Human human;
private Dimension mindim= new Dimension(width+10,height+10);
Board(){
human = new Human();
this.setTitle("Athwart");
//setLayout(null);
human.add(asd); //!!!we see here, I add asd (which is inherited from a JPanel)
// to another existing JPanel
this.setMinimumSize(mindim); //
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(human);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //
this.setLocationRelativeTo(null); //
this.setResizable(true); //
pack(); //
setVisible(true);
human.requestFocus(); //
}
}
这就是我的Obstacles 类的样子。
import javax.swing.*;
import java.awt.*;
public class Obstacles extends JPanel {
private int width=500;
private int height=450;
private Dimension mindim= new Dimension(width+10,height+10);
Obstacles()
{
this.setBackground(Color.white);
// this.addKeyListener(this);
// this.setFocusable(true);
// this.setRequestFocusEnabled(true);
setSize(mindim);
this.setVisible(true);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g); //
g.fillRect(0, 0, 60, 30);
g.setColor(Color.black);
g.draw3DRect(0, 0, 60, 30, true);
g.setColor(Color.black);
}
}
所以你可以看到组件的高度是 30,宽度是 60,但上面的图片甚至没有显示一半!
有什么办法可以让这两个JPanels 混合在一起吗?顺便一提,
我之前尝试过使用BoxLayout,但没有成功。有什么问题还是只是我的 IDE 无法正常工作?干杯并感谢您的精彩回复。我只是一个入门的 gui 程序员,我真的不知道如何处理事情。是的,如果您要询问完整的代码,我会编辑它,如果它重要的话。 :)
【问题讨论】:
-
你真的认为问题可能出在你的 IDE 上吗?
-
无法通过屏幕截图告诉您您要做什么。你想把它们并排放置吗?上下?
-
@usar,是的,这引起了我的注意,但这只是分散注意力,因为我确信(或者我当然希望)原始海报是在开玩笑,并且知道错误的可能性在 IDE 中与在他的代码中的对比非常低,接近 1 到 1000000。更重要的是,原始帖子没有包含足够的代码让我们看到正在发生的事情。我的猜测是您正在尝试绘制两个图像,然后不应该使用两个 JPanel,而应该使用一个 JPanel 包含两个逻辑对象,帮助指导它绘制两个图像。
-
你的期望实际上是什么,因为我觉得它看起来不错......
-
更多细节:你想达到什么目的?人类做什么? Human 类是什么样的?您是否尝试向单个 JPanel 添加多个障碍? 你想做什么?
标签: java swing jpanel paintcomponent