Wie kann das Bild in Netbeans GUI Builder automatisch entsprechend der Größe des übergeordneten JLabel skaliert werden?

HINTERGRUND:- Ich muss eine Swing-GUI mit Netbeans GUI Builder erstellen. Die erste Unteraufgabe besteht darin, ein Bild im gesamten Hintergrund anzuzeigen.

Ich bin gefolgtein Tutorial um das zu erledigen. Ich habe im Grunde genommen einen JFrame erstellt, sein Layout auf GridBagLayout gesetzt und ihm dann ein transparentes JPanel hinzugefügt (indem die undurchsichtige Eigenschaft deaktiviert wurde). (Frage 1)

Danach habe ich dem JFrame ein JLabel hinzugefügt, seinen Text entfernt und ihm ein Bild hinzugefügt. (Frage 2)

FRAGEN:-

Zuerst, wenn ich das JPanel hinzufüge,Die Ziehpunkte für die Größenänderung werden nicht angezeigt. Ich googelte ein bisschen und fanddieses TutorialHier ist zu sehen, dass beim Erstellen eines JPanels automatisch die Ziehpunkte für die Größenänderung angezeigt werden, die zum Ändern der Größe gezogen werden können.

Aber meins nicht (Screenshot unten)Gibt es also eine Eigenschaft oder etwas, das angepasst werden kann, damit ich die Größe ändern kann? weilmeine Absicht Wenn Sie diese transparenten Bedienfelder verwenden, um Komponenten (Schaltflächen usw.) im Hintergrund aufzunehmen, sollte der gesamte Bildschirm / das gesamte Fenster / das übergeordnete JFrame-Element ausgeblendet werden.

Zweitens hat das von mir verwendete Bild einige Abmessungen von 1024 x 768, alsoes scheint viel größer zu sein als seine übergeordneten Komponenten.

Da ich ein Anfänger bin und nicht sicher bin, ob die Größe des Hintergrundbilds angepasst werden muss, indem die Pixelbreite und Pixelhöhe des übergeordneten Bilds gemessen und die tatsächliche Bildgröße in einem Programm wie Adobe Photoshop in diese Größe konvertiert wird. Aber ich bin mir sicher, dass es einen praktischeren Weg dafür geben muss.

Ich möchte, dass sich das Bild automatisch an die Größe des übergeordneten Elements anpasst, wenn es anfänglich auf dem übergeordneten JLabel platziert wird. Wie kann ich das machen? Bitte sagen Sie mir den einfachsten Weg, vorzugsweise im GUI Builder.

Ich möchte auch sicherstellen, dass die Bildgröße, die Größe des übergeordneten JLabels und die Größe von JPanel an den Rahmen angepasst werden, wenn ich die Größe des Fensters später bei Verwendung dieser Anwendung ändere oder wenn es eine Möglichkeit gibt, die Größe von zu deaktivieren Fenster komplett.

EDIT1 @Braj

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.dev_nna.dbp;


public class JFrameParent extends javax.swing.JFrame {

    /**
     * Creates new form JFrameParent
     */
    public JFrameParent() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new java.awt.GridBagLayout());

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );

        getContentPane().add(jPanel1, new java.awt.GridBagConstraints());

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/dev_nna/dbp/scheduler/resources/Abstract-white-and-blue-backgrounds.jpg"))); // NOI18N
        jLabel1.setText("jLabel1");
        getContentPane().add(jLabel1, new java.awt.GridBagConstraints());

        pack();
    }// </editor-fold>                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(JFrameParent.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(JFrameParent.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(JFrameParent.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(JFrameParent.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JFrameParent().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage