Я вижу много потенциальных проблем:
Popup noticePopup = new Popup("Notice", 1500, 900);
JPanel noticePanel = new JPanel();
noticePanel.setPreferredSize(new Dimension(1500,1000));
Не пытайтесь вручную кодировать размер рамки или панели:
- вы не знаете, с каким разрешением людибудет использовать
- числа, которые вы предоставляете, не имеет смысла.Ширина панели не может быть такой же, как у рамки, потому что рамка имеет границы.Высота не может быть другой на 100, потому что панель будет расширена, чтобы заполнить доступное пространство.
Если вы хотите, чтобы рамка занимала весь экран, тогда вы просто используете:
noticePopup.setExtendedState(JFrame.MAXIMIZED_BOTH);
Что вы ожидаете от следующего кода:
for (int n=0; n < ListNote.size(); n++)
{
noticeThis = (String) ListNote.get(n).get(1);
}
если у вас есть более одного элемента в списке, вы просто заменяете текст в переменной "noteThis" на последний элемент всписок.
Вместо этого вы должны добавить текст в текстовую область:
JTextArea noticeArea = new JTextArea(5, 20);
for (int n = 0; n < ListNote.size(); n++)
{
if (n > 0 ) noticeArea.append("\n");
noticeArea.append( (String)ListNote.get(n).get(1) );
}
Почему у вас есть "notePanel":
noticePanel.add(noticeArea);
JScrollPane scroll=new JScrollPane(noticePanel, ...);
noticePopup.getContentPane().add(scroll);
По умолчанию JPanel используетFlowLayout, который будет учитывать предпочтительный размер любого добавляемого к нему компонента.Я понятия не имею, какой предпочтительный размер текстовой области, но полосы прокрутки появятся только тогда, когда предпочтительный размер компонента больше, чем размер полосы прокрутки.
Просто добавьте текстовую область непосредственно в область прокрутки.и полосы прокрутки появятся по мере необходимости:
JScrollPane scroll=new JScrollPane(noticeArea, ...);
noticePopup.add(scroll);
Обратите внимание, что вам не нужно использовать getContentPane()
, так как JDK1.4.