2010-07-15 2 views
2

ИТАК У меня есть этот апплет Thats как этотява кнопки апплет

  • BorderLayout.CENTER - (В это JPanel)
  • BorderLayout.EAST - (В это новый GridLayout (4,5)
  • BorderLayout.SOUTH - (в это TextArea)

Во всяком случае, на апплет, я должен парить над кнопками, чтобы увидеть их они не красят там я думаю, но я добавляю. их в методе init() ... поэтому я не знаю, что я делаю w Ронг и почему он это делает.

setLayout(new BorderLayout()); 
JPanel invOne = new JPanel(new GridLayout(5,4)); 
JPanel game = new JPanel(); 
add(invOne, BorderLayout.EAST); 
add(game, BorderLayout.CENTER); 
add(c, BorderLayout.SOUTH); 

invOne.setBounds(416,0, 60, 28); 

for (int i = 0, j = 20; i < 20; i = i+1, j = j-1) { 
    invOne.add(new JButton("SLOT " + j)); 
    invOne.setBounds(32,32,100,100); 
    invOne.setFocusable(false); 
} 

game.setBounds(0,0, 416, 288); 
repaint(); 
+0

Еще раз вы отправляете случайные биты кода, которые не помогают нам решить проблему. Вас просили в прошлом SSCCE. Узнайте, как создавать и отправлять сообщения, поэтому мы не теряем время, угадывая, какую глупую ошибку вы делаете на этот раз. В учебнике Swing имеется множество примеров. Скачайте их и протестируйте их и лечите, чтобы опубликовать правильный вопрос. Да, у учебника даже есть простой пример JApplet. – camickr

+0

Посмотрите несколько моих сообщений, я добавил SSCCE. – nn2

+0

PS -Технический вопрос я задал. – nn2

ответ

2

Что вы пытаетесь выполнить со всеми вызовами setBounds()? Либо вы позволяете pack() установить размер вашей панели в соответствии с тем, что находится внутри, либо установить границы один раз, где вы хотите увидеть, что панель сидит. Особенно звонки с размером 32x32 пикселя не помогают вообще.


EDIT:

Я нашел эти проблемы:

  • Как уже упоминалось один другой плакат, вы смешиваете Swing, AWT и компоненты. Это не работает. По сути, если некоторые из компонентов, которые вы используете, имеют «J» в начале, вы захотите пойти с «J» для всех из них. AWT теперь считается «старой школой». Это немного запутанно, потому что некоторые классы и компоненты, используемые в GUI, не имеют J. Я думаю, вам нужно тщательно работать с хорошими примерами или просматривать классы вверх.

  • По какой-то причине апплет не хотел работать хорошо, пока я не дал явные подсчеты строк и столбцов в TextArea (теперь называемый JTextArea). Я изменил new TextArea() на new JTextArea(3,20).

  • Самой большой проблемой, возможно, был пустой метод paint(). Интересно, как апплет вообще что-то отображал? Вы могли бы удалить метод paint(); Я установил его, позвонив по номеру super.paint().

  • И, наконец, имена классов (например, bl) должны начинаться с символов верхнего регистра. Компилятор в IdeOne ворчал на меня за это.

Here's my fixed code.

Счастливый взлом!

+0

OK вот код itSELF ... http://www.dasdas.pastebin.com/ftwpx7rK У него просто есть GUI ... и когда я попытался скомпилировать, я получаю: C: \ Documents and Settings \ djasnowski \ Мои документы \ bl.java: 33: не удается найти символ symbol: method pack() location: class bl \t \t это.pack(); – nn2

+1

Я надеюсь, что он будет исправлен в ближайшее время. Я отчитаю. –

+0

Я понял. Я изменил апплет на JApple, но теперь серая jPanel перекрывает нарисованные плитки (drawImage) ... – nn2

1

После добавления всех ваших компонентов в панели, вы явно назвать «пакет()» (или «перекрасить()») метод? Невызывные методы тезисов могут привести к графическим проблемам в ваших кадрах ...

+0

ОК, я добавил код. Как вы можете видеть, я добавил repaint(), но не повезло ... (Кстати, это апплет, а не кадр) – nn2

2

Найдено one page (in german language), который описывает эту же проблему: виджеты JButton появляются только после их зависания.

Проблема была в том, что компоненты AWT и Swing были смешаны.Я не могу видеть из вашего фрагмента кода, если это так, но если у вас есть импорт java.awt.*, отключите их, реорганизуйте свой код, чтобы использовать только классы Swing и повторите попытку/надейтесь на лучшее.

Еще одно предложение состояло в том, чтобы явно сделать setVisible(true) для каждой кнопки, но собеседник сказал, что это не помогло в его случае.

1

Вы используете компоненты Swing в апплете. Вы должны использовать JApplet. Просто измените extends Applet на extends JApplet.

Смежные вопросы