Проблема перекрашивания JInternalFrame
Ниже код мой вид, где я показываю потоковую камеру. Контроллер обрабатывает устанавливает изображение и перерисовывает JInternalFrame. У меня есть проблема с этим, потому что изображение с камеры покрывает весь JInternalFrame, даже строку заголовка. Я пытался использовать JPanel, но у меня были проблемы с получением изображения на JPanel, потому что я расширяю JInternalFrame.
public class CameraView extends JInternalFrame{
private BufferedImage image;
public CameraView(){
super("Camera", false,false,false, false);
setSize(500,500);
setLocation(200,200);
}
@Override
public void paint(Graphics g){
g.drawImage(image, 0, 0, null);
}
public void setImage(BufferedImage image){
this.image = image;
}
}
1 ответ
Вы переопределяете paint
метод кадра. это paint
Метод - это то, что рисует строку заголовка.
Вы должны создать второй класс, который расширяет JComponent
переопределить paint
метод этого класса, а затем добавьте его экземпляр в свой фрейм.
Что-то вроде:
public class CameraView extends JInternalFrame{
private BufferedImage image;
public CameraView(){
super("Camera", false,false,false, false);
setLocation(200,200);
add(new JComponent() {
{
setSize(500, 500); // size of the image
}
@Override
public void paint(Graphics g){
g.drawImage(image, 0, 0, null);
}
});
pack();
}
public void setImage(BufferedImage image){
this.image = image;
}
}
Вы также можете иметь paint
вызов метода super.paint(g);
но то, как вы его настроили сейчас, ваше изображение будет перекрывать строку заголовка.
Также звоню super("Camera", false,false,false, false);
так же, как звонить super("Camera")
, Значения по умолчанию false
,