Dimenticavo il codice:
/*
* Copyright (C) 2008 Cortiana Federico
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package esercizio2_3;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.Color;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/**
*
* @author Federico
*/
public class ComponentViewer{
//creo il JFrame che farà da contenitore.
static JFrame frame = new JFrame();
//creo il JPanel vuoto.
static JPanel pannello = new JPanel();
//creo il nuovo JPanel con il rettangolo.
static RectangleComponent componentRec = new RectangleComponent();
//creo il nuovo JPanel con il cerchio.
static CircleComponent componentCirc = new CircleComponent();
public static void main(String[] args){
//creo il bottone rettangolo.
JButton buttRect = new JButton("rettangolo");
//creo il bottone cerchio.
JButton buttCerc = new JButton("cerchio");
// Aggiunta del ricevente della pressione di tasti del mouse sul pannello.
class MousePressListener implements MouseListener{
public void mousePressed(MouseEvent event){
JOptionPane.showMessageDialog(null, "Clicka un bottone sottostante!!!");
}
// Metodi che non fanno nulla.
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
MouseListener listener = new MousePressListener();
pannello.addMouseListener(listener);
// Aggiunta del ricevente della pressione di tasti del mouse sul pannello.
class MousePressListenerRec implements MouseListener{
public void mousePressed(MouseEvent event){
int x = event.getX();
int y = event.getY();
componentRec.moveTo(x, y);
}
// Metodi che non fanno nulla.
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
MouseListener listenerRec = new MousePressListenerRec();
componentRec.addMouseListener(listenerRec);
// Aggiunta del ricevente della pressione di tasti del mouse sul pannello.
class MousePressListenerCirc implements MouseListener{
public void mousePressed(MouseEvent event){
int x = event.getX();
int y = event.getY();
componentCirc.moveTo(x, y);
}
// Metodi che non fanno nulla.
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
MouseListener listenerCirc = new MousePressListenerCirc();
componentCirc.addMouseListener(listenerCirc);
//imposto il colore di sfondo dei 3 JPanel.
pannello.setBackground(Color.YELLOW);
componentRec.setBackground(Color.BLUE);
componentCirc.setBackground(Color.RED);
//creo GridBag.
GridBagLayout layout = new GridBagLayout();
GridBagConstraints lim1 = new GridBagConstraints();
GridBagConstraints lim2 = new GridBagConstraints();
GridBagConstraints lim3 = new GridBagConstraints();
//imposto "layout" come layout manager di contenitore.
frame.setLayout(layout);
//imposto i GridBagConstraints.
//1-LIMPANNELLO
//imposto la posizione in cui dovrà trovarsi.
lim1.gridx = 0;
lim1.gridy = 0;
//imposto il peso di sfruttamento dello spazio in eccesso.
lim1.weightx = 0;
lim1.weighty = 1;
//imposto che il componente deve estendersi fino ai margini.
lim1.fill = GridBagConstraints.BOTH;
//imposto il posizionamento del componente all'interno della sua cella.
lim1.anchor = GridBagConstraints.NORTH;
//imposto i margini
lim1.insets.top = 10;
lim1.insets.bottom = 10;
lim1.insets.left = 10;
lim1.insets.right = 10;
//imposto il numero di colonne e righe che dovrà occupare.
lim1.gridwidth = 2;
lim1.gridheight = 1;
//creo nel GridBagLayout layout un'associazione tra un GridBagConstraints e un Component
//e aggiungo il componente al contenitore.
layout.setConstraints(pannello, lim1);
frame.getContentPane().add(pannello);
frame.repaint();
layout.setConstraints(componentRec, lim1);
frame.getContentPane().add(componentRec);
frame.repaint();
layout.setConstraints(componentCirc, lim1);
frame.getContentPane().add(componentCirc);
frame.repaint();
//2-LIMBUTTRECTANGLE
//imposto la posizione in cui dovrà trovarsi il bottone.
lim2.gridx = 0;
lim2.gridy = 1;
//imposto il peso di sfruttamento dello spazio in eccesso.
lim2.weightx = 1;
lim2.weighty = 1;
//imposto che il componente deve estendersi orizzontalmente fino ai margini.
lim2.fill = GridBagConstraints.HORIZONTAL;
//imposto il posizionamento del componente all'interno della sua cella.
lim2.anchor = GridBagConstraints.SOUTH;
//imposto i margini
lim2.insets.top = 10;
lim2.insets.bottom = 10;
lim2.insets.left = 10;
lim2.insets.right = 10;
//imposto il numero di colonne e righe che dovrà occupare.
lim2.gridwidth = 1;
lim2.gridheight = 1;
//creo nel GridBagLayout layout un'associazione tra un GridBagConstraints e un Component.
layout.setConstraints(buttRect, lim2);
//aggiungo il componente al contenitore.
frame.getContentPane().add(buttRect);
//3-LIMBUTTCIRCLE
//imposto la posizione in cui dovrà trovarsi il bottone.
lim3.gridx = 1;
lim3.gridy = 1;
//imposto il peso di sfruttamento dello spazio in eccesso.
lim3.weightx = 1;
lim3.weighty = 1;
//imposto che il componente deve estendersi orizzontalmente fino ai margini.
lim3.fill = GridBagConstraints.HORIZONTAL;
//imposto il posizionamento del componente all'interno della sua cella.
lim3.anchor = GridBagConstraints.SOUTH;
//imposto i margini
lim3.insets.top = 10;
lim3.insets.bottom = 10;
lim3.insets.left = 10;
lim3.insets.right = 10;
//imposto il numero di colonne e righe che dovrà occupare.
lim3.gridwidth = 1;
lim3.gridheight = 1;
//creo nel GridBagLayout layout un'associazione tra un GridBagConstraints e un Component.
layout.setConstraints(buttCerc, lim3);
//aggiungo il componente al contenitore.
frame.getContentPane().add(buttCerc);
buttRect.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
frame.remove(pannello);
frame.remove(componentCirc);
frame.getContentPane().add(componentRec);
frame.repaint();
}
});
buttCerc.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
frame.remove(pannello);
frame.remove(componentRec);
frame.getContentPane().add(componentCirc);
frame.repaint();
}
});
//impostazioni del frame.
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static final int FRAME_WIDTH = 400;
private static final int FRAME_HEIGHT = 600;
}