Dúvida JSeparator

6 respostas
levimendes

Olá pessoal, gostaria de saber se dá par se usar um JSeparator mais que uma vez a partir de uma única instancia,
ou seja, adicionálo em vários pontos de vários menus.

6 Respostas

E

É melhor você criar várias instâncias dele, para evitar confusão. Normalmente você nem precisa associar uma variável a ele :slight_smile:

levimendes

Pelo que eu entendi, eu posso instanciar várias vezes um único obejto, que no meu caso é o JSeparator.
Ele foi instanciado duas vezes, apesar de ter sido declarado apenas uma vez.

package jseparator;

import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JSeparator;

public class TesteJSeparator extends JFrame{

	private JMenuBar barraMenu;
	private JMenu menu1, menu2;
	private JMenuItem item1, item2, item3, item4, item5, item6, itemSair, itemFechar;
	private JSeparator separator;
	
	public TesteJSeparator() {
		init();
	}
	
	
	private void init() {
		montarJanela();
		montarMenus();
		mostrarJanela();
	}
	private void montarJanela() {
		this.setSize(500, 500);
		this.setLayout(new FlowLayout());
	}
	
	private void mostrarJanela() {
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	private void montarMenus() {
		menu1 = new JMenu("Menu 1");
		menu2 = new JMenu("Menu 2");
		
		item1 = new JMenuItem("Item 1");
		item2 = new JMenuItem("Item 2");
		item3 = new JMenuItem("Item 3");
		item4 = new JMenuItem("Item 4");
		item5 = new JMenuItem("Item 5");
		item6 = new JMenuItem("Item 6");
		
		itemFechar = new JMenuItem("Fechar");
		itemSair = new JMenuItem("Sair");
		
		menu1.add(item1);
		menu1.add(item2);
		menu1.add(item3);
		separator = new JSeparator();
		menu1.add(separator);
		menu1.add(itemFechar);
		
		menu2.add(item4);
		menu2.add(item5);
		menu2.add(item6);
		
		separator = new JSeparator();
		menu2.add(separator);
		menu2.add(itemSair);
		
		barraMenu = new JMenuBar();
		
		barraMenu.add(menu1);
		barraMenu.add(menu2);
		
		setJMenuBar(barraMenu);
	}
	
	public static void main(String[] args) {
		new TesteJSeparator();
	}
}
E

No seu caso, nem criaria uma variável de instância para o JSeparator. Ela só serve para lhe confundir. Eu faria algo como:

menu1.add(item1);  
         menu1.add(item2);  
         menu1.add(item3);  
         menu1.add(new JSeparator());  
         menu1.add(itemFechar);  
           
         menu2.add(item4);  
         menu2.add(item5);  
         menu2.add(item6);  
           
         menu2.add(new JSeparator());  
         menu2.add(itemSair);
levimendes

O problema é que estou trabalhando com menus dinamicamente, ou seja, chega um determinado momento em que eu tenho tanto que inserir como remover essas linha separadoras.

E

Ah, certo. Então tá. Pensei que era um menu fixo. Se for mesmo completamente dinâmico, você poderia até deixar os itens do menu em uma List<>, não?

levimendes

Mas daí então, eu não fujo da necessidade de ter que criar vários objetos, certo?

Criado 11 de novembro de 2010
Ultima resposta 11 de nov. de 2010
Respostas 6
Participantes 2