gpt4 book ai didi

java - JButton、带背景图像的 JFrame

转载 作者:行者123 更新时间:2023-11-30 08:13:55 24 4
gpt4 key购买 nike

我正在尝试用 Java 做一个带有背景图像的 JFFrame,但我也想在背景“上方”放置一些 JButton,如果您单击按钮,它会出现一个带有消息的新窗口。但是,按钮不会出现在 JFrame 中。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Prova3 extends JFrame implements ActionListener {//implementando el listener de eventos

JButton bt1, bt2, bt3;//creando variables globales de los botones
JFrame jf = new JFrame("BATTLESHIP");//creacion de ventana con el titulo

public Prova3(){//constructor de la clase
//setVisible(true);

//jf.setLayout(new FlowLayout());//Configurar como se dispondra el espacio del jframe
jf.setLayout(new FlowLayout());
jf.setContentPane(new JLabel(new ImageIcon("imageprova.jpg")));

Dimension d = new Dimension();//objeto para obtener el ancho de la pantalla

//imagen para el boton


//Instanciando botones con texto
bt1 = new JButton("HELLO");
bt2 = new JButton("SIZE");


//margenes para texto en boton
bt1.setMargin(new Insets(3, 5, 3, 5));
bt2.setMargin(new Insets(1, 1, 1, 1));

//color de fondo del boton
bt1.setBackground(Color.orange);

//color de texto para el boton
bt2.setForeground(Color.blue);

//agregando los botones a la ventana
jf.add(bt1); jf.add(bt2);


//añadiendo el listener a los botones para manipular los eventos del click
bt1.addActionListener(this);
bt2.addActionListener(this);
// bt3.addActionListener(this);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//finaliza el programa cuando se da click en la X
jf.setResizable(false);//para configurar si se redimensiona la ventana
jf.setLocation((int) ((d.getWidth()/2)+290), 50);//para ubicar inicialmente donde se muestra la ventana (x, y)
jf.setSize(680, 346);//configurando tamaño de la ventana (ancho, alto)
jf.setVisible(true);//configurando visualización de la venta
}

public static void main(String[] args) {

Prova3 gj = new Prova3();//uso de constructor para la ventana
}

@Override
public void actionPerformed(ActionEvent e) {//sobreescribimos el metodo del listener

if(e.getActionCommand().equals("HELLO")){//podemos comparar por el contenido del boton
JOptionPane.showMessageDialog(null, e.getActionCommand());
}
if(e.getSource()==bt2){//podemos comparar por el nombre del objeto del boton
jf.setExtendedState(JFrame.MAXIMIZED_BOTH);//cambiamos el tamaño de la ventana
}
}

最佳答案

jf.setLayout(new FlowLayout());
jf.setContentPane(new JLabel(new ImageIcon("imageprova.jpg")));

您设置布局,然后用 JLabel 替换内容 Pane 。标签没有默认布局管理器。

您的代码应该是:

//jf.setLayout(new FlowLayout());
JLabel background = new JLabel(new ImageIcon("imageprova.jpg"));
background.setLayout( new FlowLayout() );
jf.setContentPane( background );

现在您可以向标签添加组件。

请注意,此方法仅在图像大于您添加到标签的组件的大小时才有效(否则组件的绘制将被截断)。

关于java - JButton、带背景图像的 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com