Jest coś takiego jak setVisible(). JButton też to ma więc możesz coś takiego zrobić
a.setVisible(false);
b.setVisible(false);
a po jakimś evencie możesz dać
a.setVisible(true);
b.setVisible(true);
Dodaj sobie jakieś zmienne boolean i traktuj je jak flagi.
Pamiętam jak pisałem appkę w QT że wszystkie obiekty miałem na monitorze tylko raz dawałem je widoczne a raz nie. Miałem tak trzy ekrany zrobione. Ekran powitalny, ekran gry i ekran wyników. Tylko odpowiednio raz dawałem odpowiednie obiekty widzialne a raz niewidziane.
Poza tym to można inaczej zrobić
JButton b = new JButton("pfu");
remove(panelWFrame); // usowasz caly panel glowny
panelWFrame = new JPanel();
panelWFrame.setAlignmentX(java.awt.Component.CENTER_ALIGNMENT);
panelWFrame.setBorder(BorderFactory.createLineBorder(Color.red));
panelWFrame.add(b);
gBC.weightx = 0.5;
gBC.weightx = 0.5;
gBC.gridx = 1;
gBC.gridy = 0;
add(panelWFrame, gBC);
//add(panelWFrame); // dodajesz cos do tego panelu
Dimension dimension = new Dimension(300, 280);
setPreferredSize(dimension);
repaint();
setVisible(true);
Użyć JButton setText(String s);
b.setText("pfu");
a.setVisible(false);
/* remove(panelWFrame); // usowasz caly panel glowny
panelWFrame = new JPanel();
panelWFrame.setAlignmentX(java.awt.Component.CENTER_ALIGNMENT);
panelWFrame.setBorder(BorderFactory.createLineBorder(Color.red));
panelWFrame.add(b);*/
gBC.weightx = 0.5;
gBC.weightx = 0.5;
gBC.gridx = 1;
gBC.gridy = 0;
add(panelWFrame, gBC);
//add(panelWFrame); // dodajesz cos do tego panelu
Dimension dimension = new Dimension(300, 280);
setPreferredSize(dimension);
repaint();
setVisible(true);
Zmienne a i b zmienić na globalne jak user i libirary.
Nie wiem po co tworzysz nowe a i b. Dla mnie to jest trochę bez sensu. Najlepiej JButtony JTextAreny etc dać sobie jako privaty globalne i później na nich operować. Zasięg globalny daje to że możesz w każdej części kodu się do niej dobrać i coś zmienić. Np jakiś event zmieni JText. Gdyby JText miał zasięg lokalny to trzeba byłoby się gimnastykować co nie warte zachodu w przypadku GUI.
Całość:
package Menu;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import ImgPanel.ImagePanel;
/**
*
* @author minix
*/
public final class MyFrame extends JFrame {
private JButton library;
private JButton user;
private JPanel panelWFrame;
private GridBagConstraints gBC = new GridBagConstraints();
private GridBagLayout gBL = new GridBagLayout();
private JButton a;
private JButton b;
public MyFrame() {
super("Program obrazkowy");
GridBagLayout gBL = new GridBagLayout();
setLayout(gBL);
gBC.fill = GridBagConstraints.NONE;
//GridBagConstraints.NONE;
JPanel obrazPanel = new ImagePanel();
// add(obrazPanel);
obrazPanel.setBorder(BorderFactory.createLineBorder(Color.red));
Dimension dimension = new Dimension(810, 320);
setPreferredSize(dimension);
dodajButtony();
panelWFrame.setLocation(0, 0);
GridBagConstraints gBC = new GridBagConstraints();
gBC.weightx = 0.5;
gBC.weighty = 0.5;
gBC.gridx = 0;
gBC.gridy = 0;
gBC.anchor = GridBagConstraints.WEST;
add(obrazPanel, gBC);
gBC.weightx = 0.5;
gBC.weighty = 0.5;
gBC.gridx = 1;
gBC.gridy = 0;
gBC.anchor = GridBagConstraints.CENTER;
add(panelWFrame, gBC);
// setLayout(new FlowLayout());
setDefaultCloseOperation(3);
setResizable(false);
pack();
}
public void dodajButtony() {
panelWFrame = new JPanel();
library = new JButton("ksiągozbior");
user = new JButton("klient/pracownik");
user.setMargin(new Insets(2,3,2,3));
library.setMargin(new Insets(2,3,2,3));
MojListener ml = new MojListener();
library.addActionListener(ml);
user.addActionListener(ml);
panelWFrame.setBorder(BorderFactory.createLineBorder(Color.red));
panelWFrame.add(library);
panelWFrame.add(user);
gBC.weightx = 0.5;
gBC.weighty = 0.5;
gBC.gridx = 1;
gBC.gridy = 0;
add(panelWFrame, gBC);
//add(panelWFrame);
}
class MojListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source == library) {
JButton a = new JButton("cos");
JButton b = new JButton("pfu");
a.setMargin(new Insets(2,35,2,35));
b.setMargin(new Insets(2,35,2,35));
remove(panelWFrame); // usowasz caly panel glowny
//panelWFrame.set
panelWFrame = new JPanel();
panelWFrame.setAlignmentX(java.awt.Component.CENTER_ALIGNMENT);
panelWFrame.setBorder(BorderFactory.createLineBorder(Color.red));
panelWFrame.add(a);
panelWFrame.add(b);
gBC.weightx = 0.5;
gBC.weighty = 0.5;
gBC.gridx = 1;
gBC.gridy = 0;
add(panelWFrame, gBC);
//add(panelWFrame); // dodajesz cos do tego panelu
Dimension dimension = new Dimension(300, 280);
setPreferredSize(dimension);
repaint();
setVisible(true);
} else {
/*JButton b = new JButton("pfu");
remove(panelWFrame); // usowasz caly panel glowny
panelWFrame = new JPanel();
panelWFrame.setAlignmentX(java.awt.Component.CENTER_ALIGNMENT);
panelWFrame.setBorder(BorderFactory.createLineBorder(Color.red));
panelWFrame.add(b);
gBC.weightx = 0.5;
gBC.weightx = 0.5;
gBC.gridx = 1;
gBC.gridy = 0;
add(panelWFrame, gBC);
//add(panelWFrame); // dodajesz cos do tego panelu
Dimension dimension = new Dimension(300, 280);
setPreferredSize(dimension);
repaint();
setVisible(true);*/
b.setText("pfu");
a.setVisible(false);
/* remove(panelWFrame); // usowasz caly panel glowny
panelWFrame = new JPanel();
panelWFrame.setAlignmentX(java.awt.Component.CENTER_ALIGNMENT);
panelWFrame.setBorder(BorderFactory.createLineBorder(Color.red));
panelWFrame.add(b);*/
gBC.weightx = 0.5;
gBC.weightx = 0.5;
gBC.gridx = 1;
gBC.gridy = 0;
add(panelWFrame, gBC);
//add(panelWFrame); // dodajesz cos do tego panelu
Dimension dimension = new Dimension(300, 280);
setPreferredSize(dimension);
repaint();
setVisible(true);
}
}
}
}