0

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 テーブルをリストに追加してからスクロール ペインに追加すると、このように表示されます。両方をスクロール ペインに追加して、両方を表示するにはどうすればよいですか?

代替テキスト http://img27.imageshack.us/img27/3678/94687555.jpg

これは、それがどのように見えるかです..

代替テキスト http://img21.imageshack.us/img21/1343/90528093.jpg

4

3 に答える 3

1

JList をテーブルに追加して何を達成したいですか? これは根本的に間違っています。JTable は、コンポーネントを追加することを意図したものではありません。テーブルにリスト内の項目を表示する場合は、JList ではなく、TableModelインターフェイスの実装が必要です。

編集: JList と JTable を並べて表示する場合は、両方を JPanel に追加してから ScrollPane に追加する必要があります。しかし、これはかなり珍しいことです。通常、テーブルは独自の ScrollPane にあります。テーブルとリストごとに個別の ScrollPane を持つことができます。または、単純にリスト項目を表の最初の列に入れることもできます。どちらが優れているかは、要件によって異なります。

于 2009-10-23T11:49:18.480 に答える
1

何を達成しようとしているのかわかりません。テーブルの最初の列に 1.1、1.2、1.3 などの行 ID の値を表示したい場合は、それらを最初の列に追加するだけです。 jtable、レンダラーを使用してその列を異なるスタイルにすることもできます。それがうまくいかない場合は、以下のように、スクロールペインのrowHeaderにJListを設定してみてください。リストの高さに合わせて行の高さを調整する必要があります。しかし、これはあなたが望むものを達成し、リストをテーブルでスクロールできるようにします。幸運を!

java.awt.Dimension をインポートします。javax.swing.JFrame をインポートします。import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.JTable;

パブリック クラス スクロール {

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);
}

}

于 2009-10-23T13:57:04.220 に答える
0

テーブルの各行に「詳細」ボタンを追加できます。もしそうなら、TableButtonColumnが役に立ちます。

于 2009-10-23T16:14:43.147 に答える