Qual è la tecnica per far comparire/scomparire un oggetto del JFrame?
package finestra;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
public class InterfacciaGraficaConMain extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
InterfacciaGraficaConMain interfaccia = new InterfacciaGraficaConMain();
interfaccia.setVisible(true);
}
});
}
private static final long serialVersionUID = 1L;
protected static final JFrame InterfacciaGraficaConMain = null;
private Font carattere = new Font("Tahoma", 0, 12);
private PianoCartesiano PianoCartesiano = new PianoCartesiano();
private Quadrato Quadrato = new Quadrato();
private InterfacciaGraficaConMain() {
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Rappresentazione di poligoni");
JPanel pannello1 = new JPanel();
GridLayout gl = new GridLayout(5, 1);
pannello1.setLayout(gl);
JLabel JL_titolo = new JLabel("Titolo ...");
JLabel JL_sottotitolo = new JLabel("Sottotitolo...");
JL_titolo.setHorizontalAlignment(SwingConstants.CENTER);
// 1° riga
pannello1.add(JL_titolo);
JL_sottotitolo.setHorizontalAlignment(SwingConstants.CENTER);
JL_sottotitolo.setFont(carattere);
// 2° riga
pannello1.add(JL_sottotitolo);
JLabel JL_descrizione = new JLabel("Rappresentazione di poligoni con la classe Graphics di Java.");
JL_descrizione.setHorizontalAlignment(SwingConstants.CENTER);
JL_descrizione.setFont(carattere);
// 3° riga
pannello1.add(JL_descrizione);
// Pannello con il JComboBox di scelta
JPanel pannello2 = new JPanel();
pannello2.setLayout(new FlowLayout());
JLabel JL_nota = new JLabel("Tipo di poligono: ");
JL_nota.setFont(carattere);
JComboBox<String> JCB_scelte = new JComboBox<String>();
JCB_scelte.addItem("Scegli il poligono");
JCB_scelte.addItem("Quadrato");
JCB_scelte.addItem("Triangolo");
JCB_scelte.addItem("Cerchio");
JCB_scelte.setSelectedIndex(0);
JCB_scelte.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
seleziona_JTF_editabili(evt);
}
private void seleziona_JTF_editabili(ActionEvent evt) {
int campi_selezionabili = JCB_scelte.getSelectedIndex();
System.out.println(campi_selezionabili);
switch(campi_selezionabili) {
case 0:
PianoCartesiano.setVisible(true);
Quadrato.setVisible(false);
break;
case 1:
PianoCartesiano.setVisible(false);
Quadrato.setVisible(true);
break;
case 2:
PianoCartesiano.setVisible(false);
Quadrato.setVisible(true);
break;
case 3:
PianoCartesiano.setVisible(false);
Quadrato.setVisible(true);
break;
default:
PianoCartesiano.setVisible(true);
Quadrato.setVisible(false);
}
}
});
// 1° colonna
pannello2.add(JL_nota);
// 2° colonna
pannello2.add(JCB_scelte);
// 4° riga
pannello1.add(pannello2);
getContentPane().add(pannello1, BorderLayout.NORTH);
// 5° riga (vuota)
// Parte 2
PianoCartesiano.setBackground(new java.awt.Color(255, 255, 255));
Quadrato.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(Quadrato);
getContentPane().add(PianoCartesiano);
}
}
package finestra;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Quadrato extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
int xCenter = width / 2;
int yCenter = height / 2;
g.drawLine(0, yCenter, width-1, yCenter); // asse X
g.drawLine(xCenter, 0, xCenter, height-1); // asse Y
g.drawString("Quadrato", 20, 20);
g.drawRect(20, 50, 200, 200);
}
}
package finestra;
import java.awt.Graphics;
import javax.swing.JPanel;
public class PianoCartesiano extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
int xCenter = width / 2;
int yCenter = height / 2;
g.drawLine(0, yCenter, width-1, yCenter); // asse X
g.drawLine(xCenter, 0, xCenter, height-1); // asse Y
}
}
Forse capisco l'errore (i JPanel non inclusi nel JFrame non potranno mai essere visibili) e per risolvere ho provato ad usare remove() ma non funziona.
Inoltre mi piacerebbe aggiungere dei JTextField che mi permettano di scegliere centro e dimensioni del mio quadrato.
Consigli?