1

Jtable は列ヘッダーを表示しません。ベクターを使用して JTable を設定していますが、まだ機能していないようです。コードは次のとおりです。

public class InsertFileToJtable extends AbstractTableModel{
Vector data;
Vector columns;
private String[] colNames = {"col1","col2","col3","col4","col5","col6","col7","col8"};


public InsertFileToJtable() {
String line;
data = new Vector();
columns = new Vector();
  try {
        FileInputStream fis = new FileInputStream("ProcessList.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
        StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
        while (st1.hasMoreTokens())
                columns.addElement(st1.nextToken());
        while ((line = br.readLine()) != null) {
                StringTokenizer st2 = new StringTokenizer(line, " ");
                while (st2.hasMoreTokens())
                       data.addElement(st2.nextToken());
        }
        br.close();
} catch (Exception e) {
        e.printStackTrace();
}  

}

public int getRowCount() {
return data.size() / getColumnCount();
}

public int getColumnCount() {
return columns.size()-1;
}

public Object getValueAt(int rowIndex, int columnIndex) {
return (String) data.elementAt((rowIndex * getColumnCount())
                + columnIndex);
}
@Override
public String getColumnName(int column) {
return colNames[column];
}
@Override
public Class getColumnClass(int col){
return getValueAt(0,col).getClass();
}
}

メインからテーブルを呼び出す方法は次のとおりです。

public static void main(String[] args) {
    InsertFileToJtable model = new InsertFileToJtable();
    JTable table = new JTable(model);
    table.setPreferredScrollableViewportSize(new Dimension(500, 70));
    table.setFillsViewportHeight(true);
    table.setModel(model);
    JScrollPane scrollpane = new JScrollPane(table);
    scrollpane.setViewportView(tabbedPane);
    tabbedPane.addTab("Process",null,table,"");
    model.fireTableStructureChanged();
    JPanel panel = new JPanel();
    panel.add(scrollpane);
    frame.add(panel);
    }

私は初心者なので、何が悪いのかわかりません。どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

6

テーブルが JScrollPane にある場合にのみ、ヘッダーが自動的に追加されます。scrollPane に含まれていない場合は、ヘッダーを手動で管理する必要があります。コードでは、最初に scrollPane に追加されますが、後で再び削除されます - テーブルを tabbedPane に追加することによって。おそらくあなたが望むものではないでしょう、代わりにscrollPaneをタブに追加してください:

JScrollPane scrollpane = new JScrollPane(table);
//scrollpane.setViewportView(tabbedPane);
tabbedPane.addTab("Process",null,scrollPane,"");
于 2012-09-23T11:04:25.813 に答える
5

テーブルにヘッダーを表示できるようにするには、テーブルをスクロール ペインに追加する必要があります。

最初は問題ありませんでしたが、スクロール ペインのビューポートを変更して削除しました

// This was good
JScrollPane scrollpane = new JScrollPane(table);
// Then you changed it
scrollpane.setViewportView(tabbedPane);
// Then you added it to the tabbed pane
tabbedPane.addTab("Process",null,table,"");

テーブルをスクロール ペインに追加し直して、それをタブ付きペインに追加してみてください。

于 2012-09-23T11:05:48.877 に答える