Galera seguem anexo a imagem do meu programa
. Eu queria que quando o usuário clicasse em algum item do menu a pagina abrisse nessa área demarcada, tipo um jTabbedPane. Mas acontece que só quero que aba apareça quando o usuário clicar no item do menu desejado e quero que essa aba tenha o “X” para fechar a aba. Como posso fazer isso ? Quero tipo este programa, em relação as abas, olha como ele é
.
Abrir em abas
1 Resposta
Olá,
Primeiramente, para adicionar uma aba ao JTabbedPane ao clicar no botão:
A classe JTabbedPane contém um método chamado add(Component component) esse atributo componente será o conteúdo que deve aparecer na aba. O título da aba será o nome do componente adicionado.
Ex:JTabbedPane pane = new JTabbedPane();
JPanel panel = new JPanel();
panel.setName("Aba 1");
pane.add(panel);
Para adicionar a aba ao clicar no botão apenas coloque o pane.add(panel) dentro de um actionListener de tal botão.
No fim redesenhe a tela, talvez seja necessário executar um revalidate();
É bem fácil fazer uma aba com o botão de fechar.
- Primeiro crie uma extensão da classe JTabbedPane.
- Agora substitua o método Component add(Component component) da super classe(JTabbedPane);
Sabe a aba na qual contém o título do componente? Bem essa que você deseja colocar um 'x', naquela aba contém um componente.
Você pode colocar outro componente no lugar usando o método setTabComponentAt(int index, Component component);
- Ou seja, você pode criar dentro do método substituído, um JPanel com FlowLayout, adicionar um JLabel(Para o Título), e um JButton(O botão 'x' que irá fechar a aba), e quando seu pequeno JPanel estiver pronto coloque ele na aba utilizando o método setTabComponentAt
Código:
public class TabPane extends JTabbedPane {
@Override
public Component add(final Component component) {
super.add(component);
{
final CustomButton closeButton = new CustomButton("TabBlackButton");// Criando o botão de fechar
final JPanel tabPanel = new JPanel(); // Criando o component que será colocado na aba
tabPanel.setLayout(new FlowLayout(2, 2, 0)); // Criando um layout no qual irá organizar os componentes alinhados horizontalmente.
JLabel tabTitle = new JLabel(component.getName()); // Adicionando o nome do componente adicionado ao JLabel que será o título da sua aba.
tabPanel.setOpaque(false); // Deixa o fundo do componente transparente.
tabPanel.add(tabTitle); // Adiciona o título da aba
tabPanel.add(closeButton); // Adiciona o botão de fechar da aba
setTabComponentAt(indexOfComponent(component), tabPanel); // Adiciona o componente criado à aba.
closeButton.addActionListener(new ActionListener() { // Cria o listener do botão que fará a aba fechar ao ser clicado.
@Override
public void actionPerformed(ActionEvent e) {
int closeTabNumber = indexOfComponent(component); // Pega o número da aba atual baseada no componente contido nela.
removeTabAt(closeTabNumber); // Remove uma aba do JTabbedPane baseada no número da aba.
}
});
}
return component;
}
}
Espero que a partir disso você consiga, boa sorte.