Olá. pessoal!!!
Minha dúvida é a seguinte.
tenho dois Frames - Principal e Usuário.
Frame Principal tem um botão que abre o frame Usuário.
Frame Usuário tem um JTabbedPane com 4 Abas.
Pergunta: como fazer o Botão no Frame Principal selecionar uma Aba específica no Frame Usuário???
Vlw
Boa tarde!
Em poucas palavras, teria que passar como parâmetro o index da aba que seja abrir do principal para o usuário. Não sei como está seu código, mas eu tentaria fazer um construtor desse frame usuário que recebesse um int index, que indicasse qual aba era para ser mostrada na inicialização.
1 curtida
Olá RodrigoV10, obrigado por responder!!!
Pois é, isto eu sei, mas, não to conseguindo fazer. eu fiz isto aqui:
btnUsuario.setEnabled(false);
FrmUsuarios vUsuarios = new FrmUsuarios(this);
FrmUsuarios.TbPnEdicaoUsuarios.setSelectedIndex(1); <=== Assim
vUsuarios.setVisible(true);
mas, não deu.
Estranho, se os painéis foram devidamente inicializados ele deveria alterar o painel selecionado. Tenta passar por parâmetro no construtor, para que seja alterado no próprio frame de usuários.
1 curtida
É, não é como eu queria, mas, estou criando via construtor.
Vamos ver se funciona.
Rodrigo, obrigado pela ajuda.
Usei este tutorial para resolver minhas dificuldades. Ainda não é o que eu queria, mas, já tá resolvendo.
https://www.youtube.com/watch?v=pO1SNvqk6sg
Crie um método no Frame Usuário para ser chamado pelo Frame Principal.
Veja o exemplo abaixo.
Tela Principal:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
public class TelaPrincipal extends JFrame {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
TelaPrincipal tela = new TelaPrincipal();
tela.setDefaultCloseOperation(EXIT_ON_CLOSE);
tela.setLocationRelativeTo(null);
Rectangle r = tela.getBounds();
tela.setLocation(r.x - r.width / 2, r.y);
tela.setVisible(true);
} catch (Throwable t) {
t.printStackTrace();
}
}
private TelaUsuario telaUsuario;
public TelaPrincipal() {
super("Tela Principal");
setSize(640, 320);
JButton botaoAbrirTelaUsuario = new JButton("Abrir Tela Usuário");
JButton botaoSelecionarAba0 = new JButton("Selecionar Aba 0");
JButton botaoSelecionarAba1 = new JButton("Selecionar Aba 1");
JButton botaoSelecionarAba2 = new JButton("Selecionar Aba 2");
botaoAbrirTelaUsuario.addActionListener(event -> abrirTelaUsuario());
botaoSelecionarAba0.addActionListener(event -> selecionarAba(0));
botaoSelecionarAba1.addActionListener(event -> selecionarAba(1));
botaoSelecionarAba2.addActionListener(event -> selecionarAba(2));
JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
panel.add(botaoAbrirTelaUsuario);
panel.add(botaoSelecionarAba0);
panel.add(botaoSelecionarAba1);
panel.add(botaoSelecionarAba2);
Container container = getContentPane();
container.add(panel, BorderLayout.SOUTH);
}
private void selecionarAba(int aba) {
TelaUsuario tela = getTelaUsuario();
if (tela.isVisible()) {
tela.selecionarAba(aba);
} else {
JOptionPane.showMessageDialog(this, "Abra a tela de usuário!", "Atenção", JOptionPane.WARNING_MESSAGE);
}
}
private void abrirTelaUsuario() {
TelaUsuario tela = getTelaUsuario();
tela.setVisible(true);
}
private TelaUsuario getTelaUsuario() {
if (telaUsuario == null) {
telaUsuario = new TelaUsuario();
telaUsuario.setDefaultCloseOperation(HIDE_ON_CLOSE);
telaUsuario.setLocationRelativeTo(null);
Rectangle r = telaUsuario.getBounds();
telaUsuario.setLocation(r.x + r.width / 2, r.y);
}
return telaUsuario;
}
}
Tela Usuário:
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
public class TelaUsuario extends JFrame {
private JTabbedPane tabbedPane;
public TelaUsuario() {
super("Tela Usuário");
setSize(320, 240);
tabbedPane = new JTabbedPane();
tabbedPane.addTab("Aba 0", new JLabel("Esta é a aba 0"));
tabbedPane.addTab("Aba 1", new JLabel("Esta é a aba 1"));
tabbedPane.addTab("Aba 2", new JLabel("Esta é a aba 2"));
Container container = getContentPane();
container.add(tabbedPane, BorderLayout.CENTER);
}
public void selecionarAba(int aba) {
tabbedPane.setSelectedIndex(aba);
}
}
1 curtida
Olá Staroski, obrigado por responder!!!
Responder, nada, melhor dizendo, dar uma aula. Sensacional sua resposta!!!
Estou tentando implementar sua resposta. Sou novato e ainda estou me batendo nesta linguagem incrível que é o Java, ou seja, estou sofrendo para implementar… kkkk
Mas, vou conseguir, tenha certeza.
Deixa em implementá-la e te dou retorno de como ficou.
Muito obrigado mesmo pela disposição do teu tempo.