Я пытаюсь создать приложение веб-камеры для университетского проекта в java. До сих пор я никогда не нуждался в графическом интерфейсе, поэтому у меня нет опыта в этом, и для этого я использовал построитель gui внутри netbeans.Динамически добавить JPanel в группуLayout
Сейчас графический интерфейс выглядит следующим образом:
Это только JPanel и JButton добавил внутри GUI Builder.
Изображение, которое я хочу отобразить, берется с использованием openCV. Это работает отлично, и я получаю bufferedImage. Чтобы отобразить это изображение, я создал подкласс jPanel и изменил метод paintComponent.
package WebcamImageCapture;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class ImagePanel extends JPanel
{
/**
* Creates a new empty ImagePanel.
*/
public ImagePanel()
{
this.image = null;
}
/**
* Creates a new ImagePanel from BufferedImage img.
* @param img The BufferedImage to display on the ImagePanel
*/
public ImagePanel(BufferedImage img)
{
this.image = img;
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(this.image, 0, 0, this.image.getWidth(), this.image.getHeight(), null);
g.setColor(new Color(240, 160, 40));
g.fillRect(10, 10, 25, 25);
this.repaint();
}
/**
* Sets the BufferedImage img to display on ImagePanel.
* @param img The BufferedImage to display on the ImagePanel
*/
public void setImage(BufferedImage img)
{
this.image = img;
}
private BufferedImage image;
}
Класс GUI имеет элемент openCameraButton
и outputPanel
, которые являются элементы, которые вы можете увидеть на скриншоте. Я попробовал следующее добавить мой imagePanel
в outputPanel
внутри метода, который обрабатывает событие ActionPerformed
кнопки.
// create the custom jPanel
ImagePanel webcamFrame = new ImagePanel(img);
webcamFrame.setPreferredSize(new Dimension(640, 480));
this.outputPanel.getLayout().addLayoutComponent("webcamFrame", webcamFrame);
this.outputPanel.revalidate();
this.outputPanel.repaint();
this.revalidate();
this.repaint();
Это не работает = (я гугле вокруг и проходят в течение 2 дней (также чтение документации оракула на макетах:.. documentation) не найти решение
Так основные вопросы:
- Как я добавить ImagePanel?
- Если я вручную реализовать графический интерфейс с другим макетом?
Заранее благодарим вас за помощь.