JLabel вместе с другим JLabel - PullRequest
0 голосов
/ 06 мая 2010

Я хочу сделать очень простую вещь с Java Swing, и я не могу.

Я добавил jLabel, так как это единственный объект, использующий java swing, который может содержать изображение (используя свойство icon) ... по крайней мере, я не смог установить изображение, используя другие объекты.

Теперь я хочу добавить еще один элемент jlabel поверх первого с другим изображением, чтобы его можно было «щелкнуть» независимо от метки «background». Но всякий раз, когда я пытаюсь добавить его с помощью графического редактора или с помощью jLabel1.add (jLabel2), он не работает ... он просто устанавливается рядом с label1, но не поверх него.

Это для того, чтобы сделать Java-приложение, такое как игра в крестики-нолики ... чтобы у меня был фон, представляющий собой квадраты (первая метка), а остальные - "X" и "O".

1010 * доска *

Это может быть доска, и я хочу поставить метки на каждом квадрате, чтобы они могли быть фигурами.

Ответы [ 2 ]

0 голосов
/ 06 мая 2010

Вы можете легко создать подкласс JLabel и переопределить все public void paint(Graphics g) с помощью чего-то вроде:

public void paint(Graphics g)
{
  Graphics2D g2 = (Graphics2D)g;

  // antialiasing, just because it's nicer
  g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

  g2.drawRect(..); // or instead
  g2.drawImage(..); // if you really want a border as an image

  g2.drawImage(..); // to draw the symbol in the middle


}

В противном случае вы можете установить границу для JLabel с помощью BorderFactory (помните о расстояниях)между ячейками сетки) и установите только изображение посередине.

Для элементов макета используйте GridLayout, они упорядочат их в сетке, что приведет к таким же размерам.

0 голосов
/ 06 мая 2010

Ну, вы, вероятно, захотите установить метку для использования GridLayout. Затем вы можете добавить другие компоненты JLabel к каждой из девяти ячеек. Когда кто-то нажимает на ярлык, вы можете установить Icon таким, какой хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...