как отображать изображения в формате gridbaglayout? - PullRequest
1 голос
/ 26 мая 2011

Как отобразить изображения в формате GridGagLayout?

Я делаю карточную игру (точнее, 3-карточный покер). Мне удалось отобразить названия карт, например 3 of Hearts, в виде * 1004.* и еще много чего, но я не знаю, как отобразить изображения и как их расположить там, где мне нравится.

JLabel label = new JLabel("Deal");
c.fill = GridBagConstraints.HORIZONTAL;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 2;
pane.add(label, c);

И где мне хранить файлы изображений в любом местедиск, или в папке проекта?

edit: эй, спасибо, я как-то сам разбираюсь в этом, но только для того, чтобы убедиться, что сделал, эй, я вроде как-то сам разбираюсь, но только для того, чтобы убедиться, что я это сделал:

card=new ImageIcon("G:\\CS3\\png cards\\Card Back.png");
c1 = new JLabel(card);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 1;
c.gridy = 0;
pane.add(c1, c);

, так что это показывает изображения, которые я хочу, это выглядит нормально, сейчас есть проблемы, есть ли проблемы с этим кодированием?так что это показывает изображения, которые я хочу, это выглядит нормально сейчас, так что есть ли проблемы с этим кодированием?

1 Ответ

2 голосов
/ 26 мая 2011

Взгляните на руководство по java gridbag, чтобы узнать, как расположить элементы http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

Но основная концепция заключается в том, что при добавлении компонентов им назначается местоположение в сетке, и они могут занимать несколько ячеек в этой сетке. Просто помните, что иногда это может быть утомительно.

С точки зрения добавления изображения есть несколько способов, но, возможно, самый чистый способ, который я знаю, это создание BufferedImage и добавление этого изображения в jpanel в виде значка изображения:

InputStream imageStream = this.getClass().getResourceAsStream("resources/image.jpeg")
BufferedImage image = ImageIO.read(imageStream);
JLabel picLabel = new JLabel(new ImageIcon(image))

тогда у вас есть JLabel, который является изображением, и вы можете добавить его на свою панель.

pane.add(picLabel);

Наконец, с точки зрения хранения изображений, вы должны создать папку ресурсов в вашем проекте, и если ваш путь к классу задан правильно, вы можете использовать метод getResourceAsStream() для класса, чтобы получить ваше изображение.

...