Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Как на кнопки наложить картинку
Список форумов
 ->  Работа с изображениями (Advanced Imaging API)


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
Lordi : 2
Новичок

СообщениеФев 17, 2012 13:16 
Ответить с цитатой
Пишу игру "Пятнашки". Проблема в том, что на кнопки нужно наложить картинку, чтобы можно было собрать картинку!!!
Вот код:




import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Pyatnashki extends JFrame {

class Image`
public ImagePanel() throws IOException
{
image = ImageIO.read(new File("C://zzz.jpg")); // читаем изображение из файла.
}

public void paintComponent(Graphics j) {

super.paintComponent(j);
j.drawImage(image, 100, 100, null); // выводим изображение

}

private Image image;
}

/* class ImageButton extends JButton{

public ImageButton() throws IOException
{
image = ImageIO.read(new File("C://zzz.jpg")); // читаем изображение из файла.
}

public void paintComponent(Graphics j) {

super.paintComponent(j);
j.drawImage(image, 100, 100, null); // выводим изображение

}

private Image image;
}
*/

Image img = new ImageIcon("Points/2.png").getImage();
private JPanel panel = new JPanel(new GridLayout(4, 4, 2, 2));
private JMenuBar menu = null;
private final String fileItems[] = new String []{"New game", "exit"};
private static Random generator = new Random();
private int[][] numbers = new int[4][4];
public Pyatnashki() {
super("Пятнашки");
setBounds(200, 200, 350, 350);
setResizable(false);
createMenu();
setJMenuBar(menu);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container container = getContentPane();
init();
panel.setDoubleBuffered(true);
container.add(panel);
repaintField();
}
public void init() {
int[] invariants = new int[16];

for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
numbers[i][j] = 0;
invariants[i*4 + j] = 0;
}
}

for (int i = 1; i < 16; i++) {
int k;
int l;
do {
k = generator.nextInt(100) % 4;
l = generator.nextInt(100) % 4;
}
while (numbers[k][l] != 0);
numbers[k][l] = i;
invariants[k*4+l] = i;
}

boolean change = true;
int counter = 1;
while (change) {
change = false;
for (int i = 0; i < 16; i++) {
if (invariants[i] != i) {
for (int j = 0; j < 16; j++) {
if (invariants[j] == i) {
int temp = invariants[i];
invariants[i] = invariants[j];
invariants[j] = temp;
change = true;
counter++;
break;
}
}
break;
}
}
}

if (counter % 2 != 0) {
int temp = numbers[0][0];
numbers[0][0] = numbers[3][3];
numbers[3][3] = temp;
}
}

public void repaintField() {
panel.removeAll();

for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {

JButton button = new JButton(Integer.toString(numbers[i][j]));
// ImageButton button = new ImageButton();
button.setFocusable(false);
panel.add(button);
if (numbers[i][j] == 0) {
button.setVisible(false);
} else
button.addActionListener(new ClickListener());
}
}

panel.validate();
}

public boolean checkWin() {
boolean status = true;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (i == 3 && j > 2)
break;
if (numbers[i][j] != i * 4 +

j + 1) {
status = false;
}
}
}
return status;
}

private void createMenu() {
menu = new JMenuBar();
JMenu fileMenu = new JMenu("Меню");

for (int i = 0; i < fileItems.length; i++) {
JMenuItem item = new JMenuItem(fileItems[i]);
item.setActionCommand(fileItems[i].toLowerCase());
item.addActionListener(new NewMenuListener());
fileMenu.add(item);
}
fileMenu.insertSeparator(1);

menu.add(fileMenu);
}

private class NewMenuListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if ("exit".equals(command)) {
System.exit(0);
}
if ("new game".equals(command)) {
init();
repaintField();
}
}
}
private class ClickListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
button.setVisible(false);
String name = button.getText();
change(Integer.parseInt(name));
}
}

public void change(int num) {
int i = 0, j = 0;
for (int k = 0; k < 4; k++) {
for (int l = 0; l < 4; l++) {
if (numbers[k][l] == num) {
i = k;
j = l;
}
}
}
if (i > 0) {
if (numbers[i - 1][j] == 0) {
numbers[i - 1][j] = num;
numbers[i][j] = 0;
}
}
if (i < 3) {
if (numbers[i + 1][j] == 0) {
numbers[i + 1][j] = num;
numbers[i][j] = 0;
}
}
if (j > 0) {
if (numbers[i][j - 1] == 0) {
numbers[i][j - 1] = num;
numbers[i][j] = 0;
}
}
if (j < 3) {
if (numbers[i][j + 1] == 0) {
numbers[i][j + 1] = num;
numbers[i][j] = 0;
}
}
repaintField();
if (checkWin()) {
JOptionPane.showMessageDialog(null, "Победа!", "Поздравляем!!!", 1);
init();
repaintField();
setVisible(false);
setVisible(true);
}
}

public static void main(String[] args) {
JFrame app = new Pyatnashki();
app.setVisible(true);
}
}
К началу Посмотреть профиль Отправить личное сообщение
Lordi : 2
Новичок

СообщениеФев 17, 2012 13:19 
Ответить с цитатой
Или кто может скиньте код какой-нибудь игрушки по Java, очень нужно на конкурс
К началу Посмотреть профиль Отправить личное сообщение
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Работа с изображениями (Advanced Imaging API)


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru