web-dev-qa-db-ja.com

javaでJTableの行の高さを設定する

JTableの行の高さを上げることができる解決策を探しています。コンパイルして正常に実行されるsetRowHeight(int int)メソッドを使用していますが、行が増加していません。高さを設定した行のgetRowHeight(int)メソッドを使用すると、行を拡大したサイズが出力されるため、何が問題なのかわかりません。以下のコードは、私がそれを解決しようとしている大まかなイラストです。

私のクラスはJFrameを拡張します。

String[] columnNames = {"Column 1", "Column 2", "Column 1 3"};

JTable table = new JTable(new DefaultTableModel(columnNames, people.size()));

DefaultTableModel model = (DefaultTableModel) table.getModel();

int count =1;
for(Person p: people)
{
    model.insertRow(count,(new Object[]{count, p.getName(), p.getAge()+"", 
    p.getNationality}));
    count++;
}

table.setRowHeight(1, 15);//Try set height to 15 (I've tried higher)

誰かが私がどこで間違っているのか教えてもらえますか?行1の高さを15ピクセルに増やしようとしていますか?

11
Douglas Grealis

インデックス0の最初の行を空のままにする意図が何であるかわかりません。 JTableの行はインデックス0から実行されます。問題を示す完全な例(つまり [〜#〜] sscce [〜#〜] )を投稿できれば最適です。正常に機能する次の単純な例と比較してください。

enter image description here

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class DemoTable {
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("DemoTable");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        DefaultTableModel model = new DefaultTableModel();
        model.setColumnIdentifiers(new Object[] {
                "Column 1", "Column 2", "Column 3" });

        JTable table = new JTable(model);
        for (int count = 0; count < 3; count++){
            model.insertRow(count, new Object[] { count, "name", "age"});
        }
        table.setRowHeight(1, 30);

        frame.add(new JScrollPane(table));
        frame.setLocationByPlatform(true);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
20
tenorsax

以下を使用できます。

table.setRowHeight(int par1);

または、特定の行の行の高さを設定したい場合は、以下を使用します。

table.setRowHeight(int par1, int par2);

17
madcrazydrumma

TableModelListenerを追加することもできますか?

model.addTableModelListener(new TableModelListener() {
    @Override public void tableChanged(final TableModelEvent e) {
        EventQueue.invokeLater(new Runnable() {
            @Override public void run() {
                table.setRowHeight(e.getFirstRow(), 15); //replace 15 with your own height
            }
        });
    }
});
2
madcrazydrumma

JFrameのJTableを右クリックし、[プロパティ]をクリックします。下にスクロールして、rowHeight値を設定します。

set rowHeight value

2
msl