Kod: Zaznacz cały
Icon z = ((JLabel) component).getIcon();
Jeszcze nie jest w pełni skończone, nie ma funkcji przypisanych do przycisków itp.
Kod: Zaznacz cały
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.*;
import javax.swing.event.MouseInputAdapter;
import javax.swing.event.MouseInputListener;
public class DnD extends JFrame {
private Icon greenIcon=new ImageIcon("GreenBall64.gif");
private Icon redIcon= new ImageIcon("RedBall64.gif");
private Icon KgreenIcon = new ImageIcon("KGreenBall64.gif");
private Icon KredIcon= new ImageIcon("KRedBall64.gif");
private Dimension icdim;
private JPanel boardPane;
private JLabel board[][];
private JLabel dragged;
private JLayeredPane layers;
private MouseInputListener mouseHandler;
private static final long serialVersionUID = 1L;
private boolean player=true;
private final JLabel message = new JLabel("Red make a move");
private JTextField row = new JTextField(1);
Timer timer;
public DnD()
{
super("Checker");
greenIcon = new ImageIcon("GreenBall64.gif");
redIcon = new ImageIcon("RedBall64.gif");
KgreenIcon = new ImageIcon("KGreenBall64.gif");
KredIcon = new ImageIcon("KRedBall64.gif");
icdim = new Dimension(greenIcon.getIconWidth() + 5, greenIcon.getIconHeight() + 5);
boardPane = new JPanel();
board = new JLabel[8][8];
dragged = new JLabel();
layers = getLayeredPane();
mouseHandler = new MouseInputAdapter() {
public void mousePressed(MouseEvent mouseevent)
{
src = (JLabel)mouseevent.getSource();
System.out.println(src);
srcLoc = src.getLocation();
iniLoc = mouseevent.getPoint();
dragged.setBounds(src.getBounds());
dragged.setIcon(src.getIcon());
src.setIcon(null);
dragged.setVisible(true);
}
public void mouseReleased(MouseEvent mouseevent)
{
JLabel jlabel = (JLabel)mouseevent.getSource();
Point point = jlabel.getLocation();
Point point1 = mouseevent.getPoint();
point.translate(point1.x, point1.y);
Component component = boardPane.getComponentAt(point);
System.out.println(component);
JLabel jlabel1 = jlabel;
if(hasIcon(component))
if(allowedMove(jlabel, component, mouseevent))
jlabel1 =(JLabel)component;
System.out.println(jlabel+"
");
jlabel1.setIcon(dragged.getIcon());
dragged.setVisible(false);
}
public void mouseDragged(MouseEvent mouseevent)
{
dragged.setBounds((mouseevent.getX() + srcLoc.x) - iniLoc.x, (mouseevent.getY() + srcLoc.y) - iniLoc.y, icdim.width, icdim.height);
}
private JLabel src;
private Point srcLoc;
private Point iniLoc;
private boolean dragging;
};
setLocation(800, 400);
setDefaultCloseOperation(3);
setResizable(false);
fillBoard();
dragged.setHorizontalAlignment(0);
dragged.setPreferredSize(icdim);
dragged.setVisible(false);
layers.add(dragged, JLayeredPane.DRAG_LAYER);
JToolBar tools = new JToolBar();
tools.setFloatable(false);
final Timer tm = new Timer();
tm.start();
JButton newGame = new JButton("New Game");
newGame.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tm.stop();
newGame();
}
});
tools.add(newGame);
JButton save = new JButton("Save");
save.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
tools.add(save);
final JButton Resign = new JButton("Resign");
tools.add(Resign);
tools.addSeparator();
tools.add(message);
tools.addSeparator();
save.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
tools.add(row);
tools.addSeparator();
final JButton exit = new JButton("Exit");
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
tools.add(exit);
add(tools,BorderLayout.PAGE_START);
add(boardPane);
pack();
setVisible(true);
}
boolean hasIcon(Component component){
Icon z = ((JLabel) component).getIcon();
System.out.println(z); // pomocniczo do warunków
if(z!=null)
return false;
else
return true;
}
boolean allowedMove(JLabel jlabel, Component component, MouseEvent mouseevent){
int x = jlabel.getX();
int y = jlabel.getY();
int x2= component.getX();
int y2= component.getY();
Icon z = ((JLabel) component).getIcon();
System.out.println(y + " " + y2); // pomocniczo do warunków
System.out.println(x+" "+x2); // pomocniczo do warunków
System.out.println(z); // pomocniczo do warunków
if (player==true && y>y2){
if(x2>x){
if((x2-x)==69 &&(y-y2)==69){
player=false;
message.setText("Green");
return true;
}else
return false;
}else {
if((x-x2)==69 &&(y-y2)==69){
player=false;
message.setText("Green");
return true;
}else
return false;
}
}else if(player==false && y<y2){
if(x2>x){
if((x2-x)==69 &&(y2-y)==69){
player=true;
message.setText("Red");
return true;
}else
return false;
}else{
if((x-x2)==69 &&(y2-y)==69){
player=true;
message.setText("Green");
return true;
}else
return false;
}
}else
return false;
}
private void fillBoard()
{
int i = 0;
boardPane.setLayout(new GridLayout(8, 8));
for(int j = 0; j < 8; j++)
{
for(int k = 0; k < 8; k++)
{
Color color = i % 2 != 0 ? Color.WHITE : Color.BLACK;
JLabel jlabel = new JLabel();
if ( j % 2 == k % 2 )
{
if(j <3 )
{
Icon icon = greenIcon;
jlabel.setIcon(icon);
}
else if ( j>4)
{
Icon icon = redIcon;
jlabel.setIcon(icon);
}
else
{
Icon icon = null;
jlabel.setIcon(icon);
}
}
else
{
Icon icon = null;
jlabel.setIcon(icon);
}
jlabel.setHorizontalAlignment(0);
jlabel.setPreferredSize(icdim);
jlabel.setBackground(color);
jlabel.setOpaque(true);
jlabel.addMouseListener(mouseHandler);
jlabel.addMouseMotionListener(mouseHandler);
boardPane.add(jlabel);
i++;
}
i++;
}
}
public static void main(String args[])
{
SwingUtilities.invokeLater(new Runnable() {
public void run()
{
new DnD();
}
}
);
}
}
Kod: Zaznacz cały
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.*;
import javax.swing.event.MouseInputAdapter;
import javax.swing.event.MouseInputListener;
public class DnD extends JFrame {
private Icon greenIcon=new ImageIcon("GreenBall64.gif");
private Icon redIcon= new ImageIcon("RedBall64.gif");
private Icon KgreenIcon = new ImageIcon("KGreenBall64.gif");
private Icon KredIcon= new ImageIcon("KRedBall64.gif");
private Dimension icdim;
private JPanel boardPane;
private JLabel board[][];
private JLabel dragged;
private JLayeredPane layers;
private MouseInputListener mouseHandler;
private static final long serialVersionUID = 1L;
private boolean player=true;
private final JLabel message = new JLabel("Red make a move");
public DnD()
{
super("Checker");
greenIcon = new ImageIcon("GreenBall64.gif");
redIcon = new ImageIcon("RedBall64.gif");
KgreenIcon = new ImageIcon("KGreenBall64.gif");
KredIcon = new ImageIcon("KRedBall64.gif");
icdim = new Dimension(greenIcon.getIconWidth() + 5, greenIcon.getIconHeight() + 5);
boardPane = new JPanel();
board = new JLabel[8][8];
dragged = new JLabel();
layers = getLayeredPane();
mouseHandler = new MouseInputAdapter() {
public void mousePressed(MouseEvent mouseevent)
{
src = (JLabel)mouseevent.getSource();
System.out.println(src);
srcLoc = src.getLocation();
iniLoc = mouseevent.getPoint();
dragged.setBounds(src.getBounds());
dragged.setIcon(src.getIcon());
src.setIcon(null);
dragged.setVisible(true);
}
public void mouseReleased(MouseEvent mouseevent)
{
JLabel jlabel = (JLabel)mouseevent.getSource();
Point point = jlabel.getLocation();
Point point1 = mouseevent.getPoint();
point.translate(point1.x, point1.y);
Component component = boardPane.getComponentAt(point);
JLabel jlabel1 = jlabel;
if(hasIcon(component))
if(allowedMove(jlabel, component, mouseevent))
jlabel1 =(JLabel)component;
jlabel1.setIcon(dragged.getIcon());
dragged.setVisible(false);
}
public void mouseDragged(MouseEvent mouseevent)
{
dragged.setBounds((mouseevent.getX() + srcLoc.x) - iniLoc.x, (mouseevent.getY() + srcLoc.y) - iniLoc.y, icdim.width, icdim.height);
}
private JLabel src;
private Point srcLoc;
private Point iniLoc;
private boolean dragging;
};
setLocation(800, 400);
setDefaultCloseOperation(3);
setResizable(false);
fillBoard();
dragged.setHorizontalAlignment(0);
dragged.setPreferredSize(icdim);
dragged.setVisible(false);
layers.add(dragged, JLayeredPane.DRAG_LAYER);
add(boardPane);
pack();
setVisible(true);
}
boolean hasIcon(Component component){
Icon z = ((JLabel) component).getIcon();
if(z!=null)
return false;
else
return true;
}
boolean allowedMove(JLabel jlabel, Component component, MouseEvent mouseevent){
int x = jlabel.getX();
int y = jlabel.getY();
int x2= component.getX();
int y2= component.getY();
if (player==true && y>y2){
if(x2>x){
if((x2-x)==69 &&(y-y2)==69){
player=false;
message.setText("Green");
return true;
}else
return false;
}else{
if((x-x2)==69 &&(y-y2)==69){
player=false;
message.setText("Green");
return true;
}else
return false;
}
}else if(player==false && y<y2){
if(x2>x){
if((x2-x)==69 &&(y2-y)==69){
player=true;
message.setText("Red");
return true;
}else
return false;
}else{
if((x-x2)==69 &&(y2-y)==69){
player=true;
message.setText("Green");
return true;
}else
return false;
}
}else
return false;
}
private void fillBoard()
{
int i = 0;
boardPane.setLayout(new GridLayout(8, 8));
for(int j = 0; j < 8; j++)
{
for(int k = 0; k < 8; k++)
{
Color color = i % 2 != 0 ? Color.WHITE : Color.BLACK;
JLabel jlabel = new JLabel();
if ( j % 2 == k % 2 )
{
if(j <3 )
{
Icon icon = greenIcon;
jlabel.setIcon(icon);
}
else if ( j>4){
Icon icon = redIcon;
jlabel.setIcon(icon);
}else{
Icon icon = null;
jlabel.setIcon(icon);
}
}else{
Icon icon = null;
jlabel.setIcon(icon);
}
jlabel.setHorizontalAlignment(0);
jlabel.setPreferredSize(icdim);
jlabel.setBackground(color);
jlabel.setOpaque(true);
jlabel.addMouseListener(mouseHandler);
jlabel.addMouseMotionListener(mouseHandler);
boardPane.add(jlabel);
i++;
}
i++;
}
}