Using a JLabel as a container
private Icon iconMcLogo = new ImageIcon(getClass().getResource("control/mclogo.png"));
private final JLabel lbMcLogo = new JLabel(" ");
Constructor:
lbMcLogo.setIcon(iconMcLogo);
panel.add(lbMcLogo);
Something more than that
package com.marinecyb.arch.nbm.videograbber;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
public class CameraConfig extends JPanel{
private Icon iconMcLogo = new ImageIcon(getClass().getResource("control/mclogo.png"));
private final JLabel lbMcLogo = new JLabel(" ");
private final JLabel lbFps = new JLabel("FPS");
private final JLabel lbCameraSize = new JLabel("Size");
private final JComboBox cbCameras = new JComboBox();
private final JComboBox cbFps = new JComboBox();
private final JComboBox cbCameraSize = new JComboBox();
private final JButton btRefreshCameras = new JButton("Refresh");
private final JButton btAdvancedProperties = new JButton("Advanced Properties");
private String sSelectedCamera = "";
private static String[] cameraList;
private static String[] fpsList = {"25", "30"};
private static String[] sizeListMS = {"640x480", "800x600", "1024x768", "1280x720"};
private static String[] sizeListHP = {"640x480", "800x600", "1024x768", "1280x720"};
private static String[] sizeListStandard = {"640x480", "800x600", "1024x768"};
public CameraConfig(){
super();
lbMcLogo.setIcon(iconMcLogo);
updateCameras();
initFps();
updateSize();
btRefreshCameras.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updateCameras();
}
});
cbCameras.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
sSelectedCamera = (String)cbCameras.getSelectedItem();
if(sSelectedCamera != null){
MediaProperties.setCameraName((String)cbCameras.getSelectedItem());
}
}
});
cbFps.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
MediaProperties.setFrameRate(Integer.parseInt((String)(String)cbFps.getSelectedItem()));
}
});
cbCameraSize.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
MediaProperties.setImageSize((String)cbCameraSize.getSelectedItem());
}
});
btAdvancedProperties.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new CameraInfoProvider().showAdvancedProperties(MediaProperties.getCameraIndex());
}
});
addControls();
}
private void updateCameras(){
cameraList = new CameraInfoProvider().getConnectedCameras();
cbCameras.removeAllItems();
String sCameraName = MediaProperties.getCameraName();
int iFound = -1;
for(int i = 0; i < cameraList.length; i++){
cbCameras.addItem(cameraList[i]);
if(sCameraName != null && sCameraName.contains(cameraList[i]))
iFound = i;
}
if(iFound >= 0)
cbCameras.setSelectedItem(MediaProperties.getCameraName());
else{
cbCameras.setSelectedIndex(0);
MediaProperties.setCameraName((String)cbCameras.getSelectedItem());
}
sSelectedCamera = (String)cbCameras.getSelectedItem();
}
private void initFps(){
int iFps = MediaProperties.getFrameRate();
for(int i = 0; i < fpsList.length; i++){
cbFps.addItem(fpsList[i]);
if(iFps == Integer.parseInt(fpsList[i]))
cbFps.setSelectedIndex(i);
}
}
private void updateSize(){
int localWidth = MediaProperties.getImageWidth();
int localHeight = MediaProperties.getImageHeight();
String localSize = String.valueOf(localWidth) + "x" + String.valueOf(localHeight);
if(cbCameraSize != null)
cbCameraSize.removeAllItems();
if(sSelectedCamera == null){
return;
}
if (sSelectedCamera.contains("Microsoft")){
for(int i = 0; i < sizeListMS.length; i++)
cbCameraSize.addItem(sizeListMS[i]);
}
else if (sSelectedCamera.contains("HP")){
for(int i = 0; i < sizeListHP.length; i++)
cbCameraSize.addItem(sizeListHP[i]);
}
else{
for(int i = 0; i < sizeListStandard.length; i++)
cbCameraSize.addItem(sizeListStandard[i]);
}
cbCameraSize.setSelectedItem(localSize);
}
public void addControls(){
this.add(lbMcLogo);
this.add(btRefreshCameras);
this.add(cbCameras);
this.add(lbFps);
this.add(cbFps);
this.add(lbCameraSize);
this.add(cbCameraSize);
this.add(btAdvancedProperties);
}
public void toggle(){
this.setVisible(!this.isVisible());
}
}
No comments:
Post a Comment