Neste código é suposto ao clicar num botão aparecer o jpanel referente ao botão. Como posso fazer para em vez de usar sempre praticamente o mesmo código, usar apenas um metodo, ou parecido.
private void disponibilidadeButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!disponibilidadePanel.isVisible()) {
if (disponibilidadeTableModel == null) {
setupDisponibilidadesTable();
}
clientesPanel.setVisible(false);
impressosPanel.setVisible(false);
informacoesPanel.setVisible(false);
reservasPanel.setVisible(false);
disponibilidadePanel.setVisible(true);
passarRato(disponibilidadeButton);
}
}
private void informacoesButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!informacoesPanel.isVisible()) {
passarRato(informacoesButton);
disponibilidadePanel.setVisible(false);
impressosPanel.setVisible(false);
clientesPanel.setVisible(false);
reservasPanel.setVisible(false);
informacoesPanel.setVisible(true);
}
}
private void impressosButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!impressosPanel.isVisible()) {
passarRato(impressosButton);
disponibilidadePanel.setVisible(false);
informacoesPanel.setVisible(false);
clientesPanel.setVisible(false);
reservasPanel.setVisible(false);
impressosPanel.setVisible(true);
}
}
private void clientesButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!clientesPanel.isVisible()) {
passarRato(clientesButton);
disponibilidadePanel.setVisible(false);
impressosPanel.setVisible(false);
informacoesPanel.setVisible(false);
reservasPanel.setVisible(false);
clientesPanel.setVisible(true);
}
}
Cria um método que passa os valores boolean por parâmetro:
private void setPanel(boolean clientesPanel, boolean impressosPanel, boolean informacoesPanel, boolean reservasPanel, boolean disponibilidadePanel) {
this.clientesPanel.setVisible(clientesPanel);
this.impressosPanel.setVisible(impressosPanel);
this.informacoesPanel.setVisible(informacoesPanel);
this.reservasPanel.setVisible(reservasPanel);
this.disponibilidadePanel.setVisible(disponibilidadePanel);
}
1 curtida
É necessario usar o this?
Nesse caso, como são atributos de classe e não variáveis locais o this
indica que esta é a variável atributo da classe e a que não tem this
é a variável local (recebida pelo construtor). Mas só é necessário se for utilizado o mesmo nome, senão não é necessário, mas também pode ser usado.
this.clientesPanel.setVisible(clientesPanel);
ou
clientesPanel.setVisible(outroNome);
void esconderTudo() {
disponibilidadePanel.setVisible(false);
informacoesPanel.setVisible(false);
clientesPanel.setVisible(false);
reservasPanel.setVisible(false);
impressosPanel.setVisible(false);
}
private void disponibilidadeButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!disponibilidadePanel.isVisible()) {
if (disponibilidadeTableModel == null) {
setupDisponibilidadesTable();
}
esconderTudo();
disponibilidadePanel.setVisible(true);
}
}
ou
void exibirApenas(Component c) {
disponibilidadePanel.setVisible(c == disponibilidadePanel);
informacoesPanel.setVisible(c == informacoesPanel);
clientesPanel.setVisible(c == clientesPanel);
reservasPanel.setVisible(c == reservasPanel);
impressosPanel.setVisible(c == impressosPanel);
}
private void disponibilidadeButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!disponibilidadePanel.isVisible()) {
if (disponibilidadeTableModel == null) {
setupDisponibilidadesTable();
}
exibirApenas(disponibilidadePanel);
}
}
1 curtida
Acho que o ideal seria você utilizar um CardLayout
para exibir seus JPanels
, aí não precisa ficar fazendo esse controle de apresentar um e ocultar os outros.
Outra alternativa é assim:
private void trocarTela(JButton button, JPanel tela) {
passarRato(button);
JPanel[] todos = new JPanel[] {
clientesPanel,
impressosPanel,
informacoesPanel,
reservasPanel,
disponibilidadePanel
};
for (JPanel panel : todos) {
panel.setVisible(panel == tela);
}
}
private void disponibilidadeButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!disponibilidadePanel.isVisible()) {
if (disponibilidadeTableModel == null) {
setupDisponibilidadesTable();
}
trocarTela(disponibilidadeButton, disponibilidadePanel);
}
}
private void informacoesButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!informacoesPanel.isVisible()) {
trocarTela(informacoesButton, informacoesPanel);
}
}
private void impressosButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!impressosPanel.isVisible()) {
trocarTela(impressosButton, impressosPanel);
}
}
private void clientesButtonMouseClicked(java.awt.event.MouseEvent evt) {
if (!clientesPanel.isVisible()) {
trocarTela(clientesButton, clientesPanel);
}
}
2 curtidas