JButton不会显示?

时间:2013-10-07 21:18:29

标签: java swing jbutton

所以我在这里看一个教程:http://zetcode.com/tutorials/javagamestutorial/basics/

最后,他们展示了如何将图像设置为背景(这很简单)。他们使用2个代码:Board.java和Image.java(为方便起见,我在下面复制了这些代码)。

出于某种原因,我似乎无法在我的GUI中添加JButton?

我尝试在行Image Main = new Image();之后将以下代码添加到 Image.java ,但我无法弄清楚它为什么不起作用。通常,我可以使用add命令将JButton添加到JPanel,并使用setVisible(true)将面板设置为可见。

    JButton start;
    start = new JButton("Click Me");
    Main.getContentPane().add(start);

我还尝试向Board.java添加类似的代码,只是为了看它是否有效 - 当然它没有。为什么我的JButton不会出现?我知道我做错了什么,但我无法理解。有人可以帮忙吗?


(1)Board.java

package bardejov;

import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JButton;
import javax.swing.JFrame;

import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class Board extends JPanel {

    Image bardejov;

    public Board() {
        ImageIcon ii = new ImageIcon(this.getClass().getResource("bardejov.jpg"));
        bardejov = ii.getImage();
    }

    public void paint(Graphics g) {

        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(bardejov, 10, 10, null); 
    }
}

(2)Image.java

package bardejov;

import javax.swing.JFrame;
import javax.swing.JButton;


public class Image extends JFrame {

    public Image() {

        add(new Board());

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(280, 240);
        setLocationRelativeTo(null);
        setTitle("Bardejov");
        setVisible(true);
    }

    public static void main(String[] args) {
        Image Main = new Image();
    }
}

1 个答案:

答案 0 :(得分:1)

您需要先创建一个JPanel,其中Board和Button布局正确。然后将此JPanel设置为JFrame的内容窗格。您正尝试通过不同的方法向Frame添加两个不同的组件,这会导致混淆。如果你调整框架的大小,你可能会看到你在后台添加的按钮。