Я добавил веб-камеру к своему программному обеспечению, используя com.github.sarxos.webcam
. У этого есть JPanel
с именем WebcamPanel
и имеет предопределенные размеры веб-камеры, в то время как мне нужен мой собственный размер изображений. Мне удалось обрезать изображения, снятые с веб-камеры, по адресу 640 x 480
. Я хочу поместить красный прямоугольник над WebcamPanel
, чтобы показать, что эта часть изображения будет сохранена.Как установить прозрачную JPanel над непрозрачным JPanel?
public class CardPanel {
Dimension panelDim = new Dimension(640, 480);
public Cardpanel(){
//....Button Defined earlier
btnTakePhoto.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
webcameFrame();
}
});
}
private void webcamFrame(){
imageFrame = new JFrame("Photo Capture");
// Did some calculations to put window at center
imageFrame.setBounds(screenSize.width/2 - frameWidth/2, screenSize.height/2 - frameHeight/2, frameWidth,
frameHeight);
imageFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
imageFrame.setContentPane(contentPane);
JPanel webcamWindow = new JPanel();
RedHighlighter redHighlighter = new RedHighlighter();
Webcam webcam = Webcam.getDefault();
webcam.setViewSize(WebcamResolution.VGA.getSize());
webcamPanel = new WebcamPanel(webcam);
webcamPanel.setFillArea(true);
webcamPanel.setMirrored(false);
webcamPanel.setPreferredSize(panelDim);
webcamWindow.add(webcamPanel);
webcamWindow.add(redHighlighter);
hBox.add(webcamWindow);
}
// Sub Class just for drawing the rectangle
public class RedHighlighter extends JPanel{
public RedHighlighter() {
// If you delete the following line, nothing will appear
setPreferredSize(new Dimension(400, 400));
}
@Override
public void paint(Graphics g) {
g.setColor(Color.RED);
g.drawRect(100, 100, 200, 200);
}
}
}
Я использовал JLayeredPanes
, но независимо от того, что вы делаете это будет охватывать весь размер и будет показывать только один пункт на один раз.
Переопределение метода paint
помогло мне нарисовать прямоугольник, но он находится сбоку, а не сверху.
Как вы можете видеть, прямоугольник нажал WebcamPanel
влево. Я хочу, чтобы webcamPanel
оставался в его положении, а прямоугольник над ним в центре. Предложите эффективный подход к этой проблеме. Благодаря!
Заканчивать участок от свинга учебника по [Как украсить Compoents] (http://docs.oracle.com/javase/tutorial/uiswing/misc/jlayer.html) один из способов сделать это , – camickr