Dúvida JSeparator

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.

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

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();
	}
}

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); 

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.

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?

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