2015-09-08 3 views
0

Я работаю над game, но есть некоторые проблемы с расположением JLabels. У меня есть это:Местоположение на Jframe

http://puu.sh/k47m6/89136f7aeb.png

в моей доске. Я пытаюсь сделать две вещи:

  1. Позиция «Ledu» на вершине сине-иш борту
  2. Вставьте случайно сгенерированный номер под ним, так что он изменяется каждый раз, когда я нажать на изображение!

Вот мой код:

start.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     bp.removeAll(); 
     bp.revalidate(); 
     bp.repaint(); 
     BufferedImage mFrame2= null; 

     try { 
      mFrame2 = ImageIO.read(new File("B2.png")); 
     } 
     catch (IOException e1) { 
      e1.printStackTrace(); 
     } 

     bp = new BackgroundPanel(mFrame2); 
     bp.setLayout(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 
     JLabel hi1 = new JLabel ("Ledu"); 
     Font fs = hi1.getFont(); 
     hi1.setFont(fs.deriveFont(30f)); 
     c.ipady = 0;  //reset to default 
     c.ipadx = 0; 
     c.anchor = GridBagConstraints.FIRST_LINE_END; 
     c.insets = new Insets(10,0,0,0); //top padding 
     bp.add(hi1, c); 
     mainf.setContentPane(bp); 
    }; 
}); 

mainf.pack(); 
mainf.setVisible(true); 

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

+0

Должны ли мы предположить, что изображение B2.png - это изображение, которое вы прикрепили цветными частями? –

+0

B2 - весь фон, все, что вы видите в текущей картине (кроме слова Ledo) - это фон, изображение, которое я буду вставлять позже, которое будет генерировать случайное число, будет называться dice.png – Neyon

+1

Метка на картинке показывает «Леду». Пункт 1 относится к тексту как «Ludo», а в приведенном выше комментарии используется «Ledo». Так мы говорим о 3 разных вещах или о том же? Быть последовательным. Будьте точны при описании проблемы. У нас нет времени читать между строк, чтобы понять, о чем вы говорите. – camickr

ответ

2

1.Найдите Людо на вершине сине-иш борту

Ну я не знаю, что это значит. Означает ли это в абсолютном центре синей области. Или это означает верхний/левый, верхний/центральный, верхний/правый?

Будьте более наглядными, поэтому нам не нужно гадать.

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

Прочтите раздел из учебника Swing по телефону How to Use GridBagLayout для объяснения того, как работают ограничения.

Однако, я не думаю, что это решит вашу проблему, потому что вы не можете позиционировать компоненты относительно «синей» области большего изображения. Я бы предложил вам два изображения: один для игрового поля и один для синей области. Затем вы можете начать позиционировать компоненты относительно синей области.

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

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

+0

как я могу сделать это код мудрого? Я хочу добавить синюю область? и имея слово Ludo в верхней середине? зная, что я хочу найти синюю область в том же месте – Neyon

+0

Я объяснил, как это сделать. Создайте JLabel с синим изображением, установите диспетчер компоновки, добавьте компоненты. – camickr

+0

Наконец-то это заработало, спасибо большое! – Neyon