добавление JList в таблицу и добавление таблицы в область прокрутки - PullRequest
0 голосов
/ 23 октября 2009

Я создал JList и хочу добавить его в таблицу, а затем добавить таблицу в область прокрутки, чтобы они оба содержались в области прокрутки.

import model.*;
import java.awt. *;
import java.text.*;
import javax.swing.*;
import javax.swing.table.TableColumn;

public class ScrollPanel extends JPanel implements View
{
private Prison prison;
private String[] cells = new String[20];
private JList list = new JList(cells);

public ScrollPanel(Prison prison)
{
    this.prison = prison;
    prison.attach(this);
    setup();
    build(prison);
}

public void setup()
{

}

public void build(Prison prison)
{
    int rows = 20;
    int columns = 2;

    for (int i = 0; i < 20; i++)
    {
        cells[i] = prison.cells().get(i).id();
    }

    JTable table = new JTable(rows, columns);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    TableColumn column = null;
    column = table.getColumnModel().getColumn(0);
    column.setPreferredWidth(91);
    column = table.getColumnModel().getColumn(1);
    column.setPreferredWidth(91);
    table.add(list);
    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setPreferredSize(new Dimension(220, 150));
    add(scrollPane);
}

public void update()
{ }
}

Вот так выглядит моя программа, когда я сделал код, который вставил выше, который добавляет список в таблицу. альтернативный текст http://img21.imageshack.us/img21/3237/11834317.jpg Когда я добавил таблицу в список, а затем на панель прокрутки, это выглядело так. Как добавить их обоих на панель прокрутки, чтобы они оба отобразились?

альтернативный текст http://img27.imageshack.us/img27/3678/94687555.jpg

Вот как это должно выглядеть ..

альтернативный текст http://img21.imageshack.us/img21/1343/90528093.jpg

Ответы [ 3 ]

1 голос
/ 23 октября 2009

Я не уверен, что вы пытаетесь достичь, если вы просто хотите, чтобы в первом столбце таблицы отображались значения для идентификатора строки, например 1.1,1.2,1.3 и т. Д., Вы можете просто добавить их в первый Столбец jtable, вы могли бы даже стилизовать этот столбец с другими Renderers. Если это не сработает, вы можете попробовать установить JList в rowHeader полосы прокрутки, аналогично приведенному ниже. Вам нужно будет отрегулировать высоту строки в соответствии с высотой списка или наоборот. Но это позволит достичь того, что вы хотите, и позволит списку прокручивать таблицу. Удачи!

импорт java.awt. Размер; импорт javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.JTable;

публичный класс Scroll {

public static final void main(String[] args){
    JFrame f = new JFrame();
    f.setSize(new Dimension(400,400));
    JList list = new JList(new Object[]{"1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9","1.10","1.11"});
    JTable table = new JTable(11,10);
    JScrollPane sp = new JScrollPane(table);
    sp.setRowHeaderView(list);
    f.getContentPane().add(sp);
    f.setVisible(true);
}

}

1 голос
/ 23 октября 2009

Чего вы хотите добиться, добавив JList в таблицу? Это в корне неверно - JTables не предназначены для добавления компонентов к ним вообще. Если вы хотите, чтобы таблица отображала элементы в списке, вам нужна реализация интерфейса TableModel , а не JList.

Редактировать : Если вы хотите, чтобы JList и JTable отображались рядом друг с другом, вы должны добавить их в JPanel, прежде чем добавлять их в ScrollPane. Но это довольно необычная вещь; обычно таблица находится в отдельной ScrollPane. Вы можете иметь отдельную ScrollPane для таблицы и списка. Или вы можете просто поместить элементы списка в первый столбец таблицы. Что лучше, зависит от ваших требований.

0 голосов
/ 23 октября 2009

Может быть, вы могли бы добавить кнопку «Подробности» в каждую строку таблицы. Если так, то TableButtonColumn поможет вам.

...