2009-10-23 4 views
0

Я создал JList, и я хочу добавить его в таблицу, а затем добавить таблицу в панель прокрутки, чтобы обе они содержались в scroll.добавление 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() 
{ } 
} 

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

alt text http://img27.imageshack.us/img27/3678/94687555.jpg

Это то, что она должна выглядеть ..

alt text http://img21.imageshack.us/img21/1343/90528093.jpg

ответ

1

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

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

+0

так что если я использую TableModel и добавлю модель таблицы и JList в свиток, они соберутся вместе? – Karen

1

Я не уверен, чего вы пытаетесь достичь, если просто хотите, чтобы первый столбец в таблице отображал значения для идентификатора строки, например, 1.1.1.2.1.3 и т. Д., Вы могли бы просто добавить их в первый столбец jtable, вы можете даже стилизовать этот столбец с помощью w/Renderers. Если это не сработает, вы можете попытаться установить JList на rowHeader scrollpane, аналогичный приведенному ниже. Вам нужно будет отрегулировать высоту строки, чтобы разместить высоту списка, или наоборот. Но это приведет к тому, что вы хотите, и позвольте списку прокручивать w/table. Удачи!

импорт java.awt.Dimension; импорт javax.swing.JFrame; импорт javax.swing.JList; import javax.swing.JScrollPane; импорт 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); 
} 

}

+0

Мне нужен JList, так что, когда я нажимаю на номер, появится панель с указанием деталей этой тюремной камеры. – Karen

+0

Вы можете сделать это со столом. Основываясь на этих требованиях, я бы реализовал, как указано выше, но я думаю, что более чистый подход состоял бы в том, чтобы сделать это в таблице, вы могли бы показать, что первая ячейка отличается тем, что она доступна для кликабельности или имеет действие, связанное с ней. Вы можете добавить columnModelListener или ListSelectionListener в таблицу. Эти события позволят вам слушать различные события на столе, которые позволят вам достичь того, чего вы хотите. таблица.getSelectionModel().addListSelectionListener ('YOUR LISTENER') table.getColumnModel(). addColumnModelListener ('YOUR LISTENER') – broschb

0

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

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

  • Нет связанных вопросов^_^