Ajuda Swing (Captura de video)

Preciso de uma ajuda pra criar um layout para um aplicativo simples de captura de imagem.
O layout será mais ou menos como a imagem em anexo.

O problema é que não trabalhei ainda com Swing, pois desenvolvo Web. Não consigo dimensionar corretamente os panels, fica tudo fora de escala, etc…

O código abaixo mostra o que eu fiz até agora. Chegue a criar o layout mas não respeita as minhas vontades.

Se alguém puder dar uma força, agradeço muito.

public class CaptureVideo implements PropertyChangeListener {
	
	private DSCapture camera;
	private JFrame janelaPrincipal;
	
	public CaptureVideo() {
		DSFilterInfo [][] dsFilterInfo = DSCapture.queryDevices();
		camera = new DSCapture(DSFiltergraph.DD7,
				dsFilterInfo[0][0],
				false,
				DSFilterInfo.doNotRender(),
				this);
		
		JFrame janelaPrincipal = new JFrame("Captura de imagens");
		
		JTextField txtCodigoDaVenda = new JTextField(8);
		JLabel lblCodigoDaVenda = new JLabel("Código da venda: ");
		
		JTextField txtFornecedor = new JTextField(20);
		JLabel lblFornecedor = new JLabel("Fornecedor");
		
		JTextField txtItem = new JTextField();
		JLabel lblItem = new JLabel("N° item");
		
		JTextField txtQtd = new JTextField();
		JLabel lblQtd = new JLabel("Qtd");
		
		JTextField txtDescricao = new JTextField();
		JLabel lblDescricao = new JLabel("Descrição");
		
		JButton btnNovaVenda = new JButton("Nova venda");
		btnNovaVenda.setSize(new Dimension(15,10));
		
		JButton btnNovoItem = new JButton("+");
		
		JPanel painelInfo = new JPanel(new GridLayout(7,2));

		painelInfo.add(lblCodigoDaVenda);
		painelInfo.add(txtCodigoDaVenda);
		painelInfo.add(lblFornecedor);
		painelInfo.add(txtFornecedor);
		painelInfo.add(lblItem);
		painelInfo.add(txtItem);
		painelInfo.add(lblQtd);
		painelInfo.add(txtQtd);
		painelInfo.add(lblDescricao);
		painelInfo.add(txtDescricao);		
				
		JButton btnCapturar = new JButton("Capturar");
		btnCapturar.setSize(new Dimension(100,100));
		
		final JPanel painelFotos = new JPanel();
		painelFotos.setSize(new Dimension(100,100));
				
		btnCapturar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				BufferedImage image = camera.getImage();
				JLabel lblImagem = new JLabel(new ImageIcon(image));
				lblImagem.setSize(new Dimension(50, 50));
				
				painelFotos.add(lblImagem);
				
			}
		});
		
		janelaPrincipal.add(painelInfo, BorderLayout.NORTH);
		janelaPrincipal.add(camera.asComponent(), BorderLayout.EAST);
		janelaPrincipal.add(btnCapturar, BorderLayout.WEST);
		janelaPrincipal.add(painelFotos, BorderLayout.SOUTH);
		
		janelaPrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		janelaPrincipal.setSize(new Dimension(400,400));
		janelaPrincipal.pack();
		janelaPrincipal.setVisible(true);
		
	}
	
	public static void main(String[] args) {
		CaptureVideo capture = new CaptureVideo();
	}

Vlw.


Encare JPanels como “divs” do Swing.
E os layout managers como a configuração dessas divs:
http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

Antes de aprender isso, não adianta tentar sair fazendo janela.

Já tinha dado uma olhada nesses tutoriais, mas os achei pouco funcionais. De qualquer forma eu dei uma atualizada no código e já ficou melhor um pouco.

Obrigado.

Então usa a IDE Netbeans da pra desenhar na Janela, fica mais fácil…

;]

[quote=charleston10]Então usa a IDE Netbeans da pra desenhar na Janela, fica mais fácil…

;][/quote]

É uma possibilidade. Mas é importante antes saber fazer a coisa na mão.

Outra possibilidade é usar o WindowBuilder do Eclipse.