JPanel с возможностью прокрутки

Если все - Вы, потребность является convertion от ListItem до Вашего типа T, можно реализовать этот convertion в классе T как оператор преобразования.

public class T
{
    public static implicit operator T(ListItem listItem) => /* ... */;
}

public static string GetAllItems(...)
{
    ...
    List<T> tabListItems = new List<T>();
    foreach (ListItem listItem in listCollection) 
    {
        tabListItems.Add(listItem);
    } 
    ...
}
15
задан thoaionline 6 September 2009 в 13:55
поделиться

3 ответа

Вы должны использовать JScrollPane . Затем вызовите setViewportview (Component) ;

Вам не нужно реализовывать прокручиваемость, JPanel уже прокручивается

9
ответ дан 1 December 2019 в 01:39
поделиться

Как упоминалось во всех других сообщениях, нет причин для самостоятельной реализации интерфейса Scrollable. Однако, если вы просто играете, то опубликованный базовый код выглядит разумным. Однако вы не опубликовали свою демонстрационную программу, показывающую, как вы используете этот код. В будущем опубликуйте SSCCE с вашим вопросом. Если вы не знаете, что такое SSCCE, выполните поиск в Интернете.

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

Итак, если вы настраиваете рисование на панели, вы несете ответственность за установку предпочтительного размера панели при его изменении. Если вы используете панель с компонентами и диспетчер компоновки, вам не о чем беспокоиться.

1
ответ дан 1 December 2019 в 01:39
поделиться

У меня есть для вас новое решение.

Я думаю, вам нужно использовать этот код:

storyEditor = new JPanel();
storyEditor.setPreferredSize(new Dimension(..., ...)); // Insert Here your size for the editor
JScrollPane scroller = new JScrollPane(storyEditor);
tabbedPane.add("Editor", scroller));
frame.setSize(frame.getWidth()+1, frame.getHeight()); // frame is the JFrame where the tabbed pane is into
// Maybe you can replace "frame" with "this"
// You need to resize your frame. Why, I don't know...
frame.pack();
// Your original size will be restored by calling pack

Это решение было для меня. Я надеюсь, что вы это сделаете!

0
ответ дан 1 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: