当前位置:  开发笔记 > 编程语言 > 正文

Java - 使用GUI和2Dgraphics

如何解决《Java-使用GUI和2Dgraphics》经验,为你挑选了1个好方法。

我正在尝试使用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.我认为图形覆盖有一些问题.



1> camickr..:

你的问题是你打破了绘画链,因为你没有调用super.paint()所以没有绘制任何子组件.

但是,您不应该覆盖JFrame上的paint().

相反,通过覆盖paintComopnent()a 来完成自定义绘制JPanel,然后将面板添加到框架中.并且不要忘记调用super.paintComponent(g)作为方法中的第一个语句.

然后您可以添加JLabel到面板.

此外,从不在绘画方法中调用repaint().这将导致无限循环.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有