我正在尝试使用java swing GUI,同时我正在为我正在创建的游戏绘制2Dgraphics.我的目标是在图形顶部下拉.每当我尝试按下按钮或在秋千下降时我都看不到它.我相信这是涵盖摆动元素的2Dgrahpics.
这是我的类decleration和我的JFrame创建:
public class Main extends JFrame{ public Main(){ setBackground(Color.LIGHT_GRAY); setSize(1000,600); setTitle("Scaling Tests"); setDefaultCloseOperation(3); setVisible(true);
这是我双缓冲和绘制图形的方式:
public void paint(Graphics g){ dbImage = createImage(1000, 600); dbg = dbImage.getGraphics(); draw(dbg); g.drawImage(dbImage, 0, 0, this.getWidth(), this.getHeight() , this); repaint(); } public void draw(Graphics g){ g.setColor(Color.red); g.fillRect(100, 100, 200, 200);
我试图在构造函数和draw方法中绘制这样的JLabel:
JLabel mylabel = new JLabel(); mylabel.setText("Hello World!"); mylabel.setBounds(0, 0, 1280, 720); mylabel.setVisible(true); //unnecessary this.add(mylabel);
这没效果.无论我把代码放在哪里,我都看不到Jlabel.我认为图形覆盖有一些问题.
你的问题是你打破了绘画链,因为你没有调用super.paint()所以没有绘制任何子组件.
但是,您不应该覆盖JFrame上的paint().
相反,通过覆盖paintComopnent()
a 来完成自定义绘制JPanel
,然后将面板添加到框架中.并且不要忘记调用super.paintComponent(g)作为方法中的第一个语句.
然后您可以添加JLabel
到面板.
此外,从不在绘画方法中调用repaint().这将导致无限循环.