Я пытаюсь создать программу на Java, которая похожа на настольную игру. У меня есть gameTiles, в настоящее время только с одним цветом, когда я пытаюсь правильно подобрать макет. Я хочу, чтобы плитки появлялись примерно на полпути ширины окна и простирались на дно, возможно, где-нибудь от 9x9 или 11x11 различных фрагментов. Я попытался использовать макет сетки, чтобы они были близки друг к другу, не обязательно касаясь, но достаточно близко, чтобы выглядеть как настольная игра. Однако, независимо от того, что я пытаюсь сделать, плитки - это пространство, находящееся далеко друг от друга, и меняют форму при изменении размера окна. Я использую менеджер GridLayout, чтобы попытаться достичь этого. Вот мой код.grid layout с JPanels java
import java.awt.GridLayout;
import javax.swing.JFrame;
public class GameWindow extends JFrame {
public GameWindow(String title){
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1200,400);
}
/**
* @param args
*/
public static void main(String[] args) {
GameWindow gameWindow = new GameWindow("Game");
gameWindow.setLayout(new GridLayout(0,2));
GameTile greenTile = new GameTile(0,true,0,10);
GameTile greenTile2 = new GameTile(0,true,0,10);
gameWindow.add(greenTile);
gameWindow.add(greenTile2);
gameWindow.setVisible(true);
}
}
Это файл GameWindow.java. GameTile.java я до сих пор (который до сих пор в основном не закончен только для тестирования) выглядит следующим образом:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
/**
* @author Zachary Parks
*
*/
public class GameTile extends JPanel {
private Color color;
private Color[] colors = {Color.BLUE, Color.YELLOW, Color.BLACK};
private int score, multiplier,initialX,initialY;
private boolean positiveEffect;
public GameTile(int colorTile, boolean effect, int initX, int initY){
color = colors[colorTile];
score = getScore(color);
multiplier = getMultiplier(color);
positiveEffect = effect;
initialX = initX;
initialY = initY;
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Image image = null;
try {
image = ImageIO.read(new File("greentile.png"));
} catch (IOException e) {
e.printStackTrace();
}
g.drawImage(image,initialX,initialY,this);
}
private int getMultiplier(Color color2) {
return 0;
}
private int getScore(Color color2) {
return 0;
}
/**
* Method that returns the data from the tile in
* array of int. 0 index = added score, 1 index = tile effect score
* @return
*/
public int[] getData() {
int [] scoreData = null;
scoreData[0] = score*multiplier;
return null;
}
}
Много кода все еще продолжается, как и свойство GameTile, все, что я пытаюсь в этот момент вы получаете плитки рядом друг с другом. Это то, что я получаю:
Итак, что конкретно представляет собой ваш вопрос? Ваша батарея составляет 94%, подключите кабель? – brummfondel
Не делайте ввода-вывода файлов в методе рисования. Изображение должно быть прочитано в конструкторе вашего класса. – camickr
Вам действительно нужны эти панели и менеджер макетов? Если вы ищете простой доски, почему бы просто не рисовать и заполнять квадраты 9x9 или 11x11? – Arvind