es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo mover etiquetas en un JPanel de Java Swing

Tengo un panel y estoy tratando de tener una imagen de fondo, y dos conjuntos de texto, un “título” y un área de texto para agregar texto más tarde. ¿Cómo puedo hacer que el área de texto quede encima de la imagen (etiqueta) o si hay una manera completamente mejor de lograr esto?

`//Para el texto (derecha)

JPanel panelTexto = new JPanel();
//panelTexto.setLayout (); // No entiendo los diseños lo intenté y no llegué a lo que necesitaba
panelTexto.setBorder(borde);
panelTexto.setBounds(190, 0, 1300, 886);
panelTexto.setBackground(Color.BLACK);

//Importar para la etiqueta de inventario
JLabel etiquetaTexto = new JLabel(); // Etiqueta del título
arrayTXTA = new JTextArea(0, 1); // Etiqueta del texto que agregaré más tarde
JLabel etiquetaFondo = new JLabel(); // Etiqueta de la imagen de fondo
ImageIcon imagenTex = new ImageIcon(“src\emporium\pkg\background.jpg”); // Configura la imagen para el fondo
//código para imagen de fondo
etiquetaFondo.setIcon(imagenTex); // agrega una imagen
etiquetaFondo.setBounds(70, 5, 1200, 886);

//Código para el título
etiquetaTexto.setHorizontalTextPosition(JLabel.CENTER);
etiquetaTexto.setVerticalTextPosition(JLabel.TOP);
etiquetaTexto.setForeground(new Color(0, 255, 0));
etiquetaTexto.setFont(new Font(“Blackadder ITC”, Font.BOLD, 30));

//Código para el texto que agregaré más tarde
arrayTXTA.setVisible(true);
arrayTXTA.append(“Palabras”);
arrayTXTA.append(“Palabras”);
arrayTXTA.append(“Palabras”);
arrayTXTA.setForeground(new Color(255, 0, 0));
arrayTXTA.setFont(new Font(“Blackadder ITC”, Font.BOLD, 30));
arrayTXTA.setBackground(new Color(0, 0, 0, 0));
arrayTXTA.setBounds(25, 0, 0, 0);`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el diseño deseado, puede utilizar un panel en capas para colocar JTextArea sobre la etiqueta de imagen de fondo. Aquí hay un ejemplo de fragmento de código:

    JLayeredPane layeredPane = new JLayeredPane();
    layeredPane.setPreferredSize(new Dimension(1200, 886));
    
    // Configurar la etiqueta de imagen de fondo
    JLabel textLabelbg = new JLabel(new ImageIcon("src\\emporium\\pkg\\background.jpg"));
    textLabelbg.setBounds(0, 0, 1200, 886);
    layeredPane.add(textLabelbg, new Integer(0)); // Agregar a la capa inferior
    
    // Configurar la etiqueta de título
    JLabel titleLabel = new JLabel("Título", SwingConstants.CENTER);
    titleLabel.setForeground(Color.GREEN);
    titleLabel.setFont(new Font("Blackadder ITC", Font.BOLD, 30));
    titleLabel.setBounds(300, 0, 100, 36);
    layeredPane.add(titleLabel, new Integer(1)); // Agregar a la segunda capa
    
    // Configurar JTextArea
    JTextArea textArea = new JTextArea(0, 1);
    textArea.setOpaque(false);
    textArea.setForeground(Color.RED);
    textArea.setFont(new Font("Blackadder ITC", Font.BOLD, 30));
    textArea.setBounds(25, 0, 100, 100);
    layeredPane.add(textArea, new Integer(2)); // Agregar a la capa superior
    
    // Agregar layeredPane a su panel
    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.add(layeredPane, BorderLayout.CENTER);
    

    En este código, JLayeredPane se utiliza para apilar los componentes uno encima del otro. La imagen de fondo se agrega a la capa más baja, la etiqueta del título en la segunda capa y JTextArea en la capa superior. JTextArea se configura para ser transparente para que se pueda ver la imagen de fondo debajo.

    Tenga en cuenta que es posible que deba ajustar la posición y el tamaño de los componentes para adaptarse a sus necesidades. Además, considere utilizar un administrador de diseño para simplificar el código de diseño.

Comments are closed.