joi, 24 decembrie 2009

Java - Folosire JLayeredPane si GridLayout


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;

public class GridPlusLayer
{
int nr_linii=0,nr_coloane=0;
JFrame frame;
JLabel label,labelAfisare, superLabel;
int x=10,y=10;
public static void main(int x,int y)
{
GridPlusLayer gui=new GridPlusLayer(x,y);
}


GridPlusLayer(int x,int y)
{
if(x>=0&&y>=0)
nr_linii=x;
nr_coloane=y;
frame=new JFrame("Butoane");
frame.setSize(nr_linii*75,nr_coloane*75);
JLayeredPane layer=new JLayeredPane();
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(nr_linii,nr_coloane));
labelAfisare=new JLabel("Nimic");

for(int i=0;i<(nr_linii*nr_coloane);i++)
{

label=new JLabel("");
label.setOpaque(true);

int red=(int )(Math.random()*255);
int green=(int )(Math.random()*255);
int blue=(int )(Math.random()*255);
Color random=new Color(red,green,blue);
Color complementary=new Color (255-red,255-green,255-blue);
labelAfisare.setOpaque(true);
labelAfisare.setBackground(complementary);

label.setBackground(random);
label.setText(""+(i+1));
panel.add(label);


}
superLabel=new JLabel();
superLabel.setOpaque(true);
superLabel.setBounds(x,y,(int)(nr_linii*75*0.5),(int)(nr_coloane*75*0.5));
panel.setBounds(0,0,frame.getWidth(),frame.getHeight());
layer.add(panel,JLayeredPane.DEFAULT_LAYER);
layer.add(superLabel,JLayeredPane.PALETTE_LAYER);

frame.add(layer,BorderLayout.CENTER);
frame.add(labelAfisare,BorderLayout.NORTH);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
layer.addMouseListener(new List());
}
class List implements MouseListener
{
public void mousePressed(MouseEvent e)
{
x=e.getX();
y=e.getY();
superLabel.setBounds(x,y,(int)(nr_linii*75*0.5),(int)(nr_coloane*75*0.5));
labelAfisare.setText("X: "+e.getX()+" Y: "+e.getY());
}

public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
}

Niciun comentariu:

Trimiteți un comentariu