Ajuda Swing (Captura de video)

4 respostas
S

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.


4 Respostas

ViniGodoy

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.

S

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.

charleston10

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

;]

ViniGodoy

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

;]

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

Outra possibilidade é usar o WindowBuilder do Eclipse.

Criado 1 de março de 2013
Ultima resposta 1 de mar. de 2013
Respostas 4
Participantes 3