2017-01-28 2 views
-1

Я пишу код для сервера, где, когда каждый клиент соединяется, их имя пользователя отображается путем добавления JLabel на GUI сервера динамически, например:Swing - прокрутка Сетка

public class Server { 

    public void connect() { 
     //Handle client 
     frame.add(new JLabel(client.getUsername())); 
    } 

} 

Теперь я хотел бы добавьте их в таблицу/таблицу с тремя столбцами, причем каждый JLabel занимает другую ячейку. Когда таблица заполнена, таблица должна прокручиваться, поскольку автоматически добавляется больше строк.

Я не уверен, как это сделать. Добавление GridLayout и JScrollPane к тому же JFrame устанавливает JScrollPane в одну ячейку, а не всю таблицу.

Каков хороший способ сделать это?

+1

[Как использовать таблицы] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html), [Как использовать списки] (http://docs.oracle.com /javase/tutorial/uiswing/components/list.html), [Как использовать панели прокрутки] (http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html) – MadProgrammer

ответ

1

Сетка должна быть внутри панели прокрутки. Это может быть достигнуто с помощью конструктора

JScrollPane(Component view) 

или

JScrollPane(Component view, int vsbPolicy, int hsbPolicy) 

Вы также можете настроить панель прокрутки, так что полосы прокрутки ар скрыты, когда они не нужны:

JScrollPane scroll = new JScrollPane(myGrid, 
     JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
     JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 

После этого вы должны добавить панель прокрутки в iframe, но не в сетку.

+0

Что именно будет ' Просмотр компонентов? Я предполагаю 'JFrame' с' GridLayout'? – Glenn

+0

Компоненты Swing ** внутри JFrame **, например JPanel, JLabel, JScrollPane и т. Д. – Aloso

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