Изображение в качестве фона для jFrame в Java Netbeans

javaНе так давно я столкнулся с задачей установки изображения в качестве фона для jFrame в Java. Итак, начнем. Суть способа в следующем: у jLabel в Java можно установить фоновое изображение — иконку (icon). При этом jLabel можно будет использовать как фон. Сверху расположим прозрачный jPanel, и уже на панели разместим все остальные компоненты. Давайте сначала я покажу как это сделать через визуальный редактор Netbeans, а потом в конце статьи я выложу исходный код Java:

  1. В конструкторе форм Netbeans щелкаем по jFrame правой кнопкой мыши и в контекстном меню выбираем пункт «Установить расположение» -> «Макет контейнера сетки» (GridBagLayout)Изображение в качестве фона для jFrame в Java Netbeans
  2. Добавьте панель (jPanel) в jFrame
  3. В окне «Свойства» jPanel уберите галочку со свойства «opaque» Изображение в качестве фона для jFrame в Java Netbeans - 3-ий шаг
  4. Добавьте на jFrame (не на jPanel) компонент jLabel (метка)
  5. В свойствах только что добавленного jLabel найдите свойство icon и возле него нажмите на кнопку … и выберите интересующее вас изображение:Изображение в качестве фона для jFrame в Java Netbeans - 5 шаг
  6. В свойствах jLabel найдите свойство «text» и удалите оттуда весь текст
  7. В свойствах jLabel найдите «X в сетке» (Grid X), «Y в сетке» (Grid Y), Ширина шага сетки, Высота шага сетки (Weight X и Weight Y) и установите значение 1 у всех этих свойств, а свойству «заполнение» (Fill) установите значение «Оба» (Both):Изображение в качестве фона для jFrame в Java Netbeans - 7-ой шаг
  8. Повторите шаг 7 для добавленной ранее jPanel

Все, фон готов, теперь можно перетаскивать элементы на фрейм с фоном. А теперь, как я и обещал, исходный код для создания фона для jFrame вручную, без конструктора:

 JFrame frame = new JFrame();
 java.awt.GridBagConstraints gridBagConstraints;
 javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
 javax.swing.JLabel jLabel1 = new javax.swing.JLabel();
 frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 frame.getContentPane().setLayout(new java.awt.GridBagLayout());
 jPanel1.setOpaque(false);

 gridBagConstraints = new java.awt.GridBagConstraints();
 gridBagConstraints.gridx = 1;
 gridBagConstraints.gridy = 1;
 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
 JButton button1 = new JButton();
 button1.setText("Test btn");
 button1.setBounds(5, 5, 150, 30);
 jPanel1.add(button1);
 frame.getContentPane().add(jPanel1, gridBagConstraints);

 jLabel1.setIcon(new javax.swing.ImageIcon("/table.jpg")); // NOI18N
 gridBagConstraints = new java.awt.GridBagConstraints();
 gridBagConstraints.gridx = 1;
 gridBagConstraints.gridy = 1;
 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 frame.getContentPane().add(jLabel1, gridBagConstraints);

 frame.pack();
 frame.setVisible(true);

Добавить комментарий

Ваш адрес email не будет опубликован.