我如何将JButton放在图像上?

Eri*_*kos 5 java size swing jbutton paintcomponent

我正在尝试修复一个JFrame,其中将有一个背景图像和图像JButtons将执行一些命令.我尝试在没有布局的情况下这样做,因为我想在JFrame上的某些特定位置放置小按钮,但每次我这样做时,背景图像都会出现在前面,或者JFrame的大小等于JFrame大小.使用以下代码,JButton与JFrame具有相同的大小.我试图改变JButton的大小和位置,但没有.你能帮我吗?

这是代码


public final class Test extends JComponent
{
 private Image background;
 private JFrame frame;
 private Dimension dimension;

public Test()
{  
    dimension = new Dimension(15, 15);
    frame = new JFrame("Iphone");
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(this);
    frame.setBounds(641, 0, 344, 655);
    frame.setVisible(true);

    test = displayButton("tigka");
    frame.getContentPane().add(test);
}

public void update(Graphics g)
{
    paint(g);
}


public void paintComponent(Graphics g)
{
    super.paintComponents(g);
    g.drawImage(background, 0, 25, null); // draw background
Run Code Online (Sandbox Code Playgroud)

// 标签();

test = displayButton("test"); public JButton displayButton(String name){JButton button = new JButton(name); button.setSize(100,100); button.setPreferredSize(尺寸); 返回按钮; }

dac*_*cwe 7

您需要更改content pane以获取您的背景Frame.

public static void main(String[] args) throws IOException {

    JFrame frame = new JFrame("Test");

    frame.setContentPane(new JPanel() {
        BufferedImage image = ImageIO.read(new URL("http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png"));
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(image, 0, 0, 300, 300, this);
        }
    });

    frame.add(new JButton("Test Button"));

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 300);
    frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)

输出:

截图

  • @dacwe @kleopatra如果你把它改成paintComponent(我认为是正确的)那么它应该首先用来做你想要绘制图像的所有默认绘画.自己测试一下. (2认同)