2017-01-08 4 views
0

Я совершенно новый в java, и я пытаюсь создать свою собственную игривую игру. Я создал свои собственные классы Board и Tile как JPanels. в то время как им-рисунок плитка на моем совете:Java Swing repaint(), revalidate() issue after addind Jpanel to Jpanel

Tile tile = new Tile(currentlyChosenLetter, jump); 
board.add(tile); 
tile.setBounds(x * jump + 1, y * jump + 1, jump - 2, jump - 2); 

когда им делать, как это все, кажется, работает нормально:

Without repaint

, но после добавления:

board.revalidate(); 
board.repaint(); 

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

WithRepaint

х и у им получать от моей позиции мыши:

int jump = board.getHeight()/15; 
int x = (e.getX()/jump); 
int y = (e.getY()/jump); 

где е MouseEvent.

+3

1) * ".. есть 2 проблемы" * Затем запустите два вопроса. SO - это сайт Q & A, а не справочная служба. 2) Опубликуйте [mcve] (для каждого вопроса, только с кодом, связанным с этой проблемой). 3) Не забудьте задать явный вопрос - ** Q ** и сайт. –

ответ

1
board.revalidate(); 
board.repaint(); 

REVALIDATE() заявление вызывает менеджер компоновки, так что дочерние компоненты приведены размеры и местоположение на основе правил менеджера компоновки. Диспетчер компоновки по умолчанию для JPanel - это FlowLayout, поэтому компоненты отображаются в одной строке.

So не использование setBounds(...). Вместо этого используйте соответствующий менеджер компоновки, например, GridLayout и добавьте компоненты на каждый квадрат сетки.

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

+0

this.setLayout (null); работал! –

+1

@ MaciekTrystuła, вы, казалось, пропустили точку всего ответа. Swing был разработан для использования с менеджерами компоновки, а не с нулевым расположением. Нет необходимости использовать нулевой макет. Это идеальный сценарий использования GridLayout. Он выполняет весь код управления компоновкой для вас. Не изобретайте велосипед! – camickr