[RESOLVIDO] Como usar um JPanel predefinido em várias janelas diferentes?

5 respostas
E

Olá pessoal. Estou com um programa que contém uma tela de busca. Gostaria de fazer essa tela padrão em um jPanel e depois reutiliza-lá em outras jPanel inseridas em outras janelas. Isso é possível?
Uso o NetBeans e tentei o seguinte:

Criei minha tela de busca padrão na classe Lista_busca.java (dentro dela tem alguns botoes e campos nada de mais), em seguida criei uma classe extensiva JInternalFrame com um jPanel1 dentro dela. Por fim personalizei o código do jPanel1 como:

jPanel1 = new Lista_busca();

Porém quando executo não aparece nada da tela de busca.
Esse procedimento funciona com componentes gráficos 2D.

Alguém tem alguma ideia de como fazer isso?

5 Respostas

mauricioadl

Crie uma classe que herde de JPanel, coloque o que vc quiser nela, botoes, labels, etc. Depois basta usa-lo como um componente swing qualquer.

[]'s

E

mauricioadl:
Crie uma classe que herde de JPanel, coloque o que vc quiser nela, botoes, labels, etc. Depois basta usa-lo como um componente swing qualquer.

[]'s

Bom fiz o seguinte:
Criei uma classe Lista_busca.java

public class Lista_busca extends javax.swing.JPanel

Coloquei um jTextField, um jList e fiz algumas funções public static dentro dela.

Em uma outra classe, que seria a janela formulário, coloquei um jPanel (jPanel1) onde gostaria que aparecesse o conteúdo de Lista_busca e fiz:

jPanel1 = new Lista_busca();

Porém quando tento chamar as funções de Lista_busca elas não aparecem e seus componentes tb não aparecem tela.

Poderia postar algum código onde posso fazer esse procedimento.
Obrigado.

mauricioadl
public class MyPanel extends JPanel {
	private JButton jcomp1;
	private JButton jcomp2;
	private JComboBox jcomp3;
	private JTextField jcomp4;
	private JList jcomp5;
	private JTextArea jcomp6;
	private JMenuBar jcomp7;

	public MyPanel() {
		String[] jcomp3Items = { "Item 1", "Item 2", "Item 3" };
		String[] jcomp5Items = { "Item 1", "Item 2", "Item 3" };
		JMenu fileMenu = new JMenu("File");
		JMenuItem printItem = new JMenuItem("Print");
		fileMenu.add(printItem);
		JMenuItem exitItem = new JMenuItem("Exit");
		fileMenu.add(exitItem);
		JMenu helpMenu = new JMenu("Help");
		JMenuItem contentsItem = new JMenuItem("Contents");
		helpMenu.add(contentsItem);
		JMenuItem aboutItem = new JMenuItem("About");
		helpMenu.add(aboutItem);

		jcomp1 = new JButton("Button 1");
		jcomp2 = new JButton("Button 3");
		jcomp3 = new JComboBox(jcomp3Items);
		jcomp4 = new JTextField(5);
		jcomp5 = new JList(jcomp5Items);
		jcomp6 = new JTextArea(5, 5);
		jcomp7 = new JMenuBar();
		jcomp7.add(fileMenu);
		jcomp7.add(helpMenu);

		setPreferredSize(new Dimension(667, 367));
		setLayout(null);

		add(jcomp1);
		add(jcomp2);
		add(jcomp3);
		add(jcomp4);
		add(jcomp5);
		add(jcomp6);
		add(jcomp7);

		jcomp1.setBounds(25, 35, 100, 20);
		jcomp2.setBounds(140, 40, 140, 20);
		jcomp3.setBounds(10, 75, 100, 25);
		jcomp4.setBounds(125, 70, 100, 25);
		jcomp5.setBounds(50, 125, 100, 75);
		jcomp6.setBounds(180, 135, 100, 75);
		jcomp7.setBounds(25, 225, 200, 25);
	}
}
mauricioadl
public class MeuFrame extends JPanel {
	private JPanel jcomp1;
	private JPanel jcomp2;

	public MeuFrame() {
		jcomp1 = new MyPanel();
		jcomp2 = new MyPanel();

		setPreferredSize(new Dimension(667, 367));
		GridLayout layout = new GridLayout(1, 2, 0, 0);
		setLayout(layout);

		add(jcomp1);
		add(jcomp2);
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame("MyPanel");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().add(new MeuFrame());
		frame.pack();
		frame.setVisible(true);
	}
}
E

Muito bom mauricioadl.
Funcionou do jeito que eu queria.
Obrigado pela ajuda.

Criado 15 de outubro de 2012
Ultima resposta 17 de out. de 2012
Respostas 5
Participantes 2