2013-04-06 28 views
10

JTableの行の高さを上げるためのソリューションを探しています。私は、コンパイルしてOKを実行するsetRowHeight(int int)メソッドを使用していますが、行[s]は増加していません。私が高さを設定した行のgetRowHeight(int)メソッドを使用すると、行を増やしたサイズが表示されるので、何が間違っているのか分かりません。以下のコードは、私がどのように解決しようとしているかの概略図です。JavaのJTableの行の高さを設定する

私のクラスは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ピクセルの高さを増やそうとしていますか?

を使用でき
+2

'私はその一例として、私のコードを配置し直して、私も100までの高さまで上昇し、そしてまだvisable increase'。このため、問題を示す[SSCCE](http://sscce.org/)を投稿する必要があります。あなたが何かをやっていると言っているからといって、あなたが実際にやっているというわけではありません。誤って2つのテーブルを定義した場合、実際には表示されないテーブルのプロパティを変更している可能性があります。 – camickr

+0

申し訳ありませんが、私はループ内でsetRowHeight(int int)メソッドを使用していましたが、setRowHeight(int)に変更しました。返信をありがとう、多くのappreicated –

答えて

13

インデックス0の最初の行を空にする意図はわかりません。 JTableの行はインデックス0から実行されます。問題を示す完全な例(つまりSSCCE)を投稿できるのが最善です。 OK働くこの単純な例と比較:

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(); 
      } 
     }); 
    } 
} 
+1

お返事ありがとうございました。あなたの例としてコードを整理すると、今すぐ動作します。よろしくお願いします。 –

+0

@DouglasGrealisよろしくお願いします。 :) – tenorsax

11

たり、特定の行の行の高さを設定したい場合は、使用:

table.setRowHeight(int par1, int par2);

+0

返信いただきありがとうございます。私のコードで見てきたように、私はすでにそれを呼び出していますが、何もしていないようです。 –

+0

model.setRowHeight()を使用してみますか?あなたがテーブル変数 – madcrazydrumma

+0

からgetModel()メソッドを呼び出すので、私はそこで試してみましたが、コンパイラ出力は次のようになりました:位置DefaultTableModelでシンボルsetRowHeightを見つけることができませんか?もう一度おねがいします –

2

あなたはまた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 
      } 
     }); 
    } 
}); 
+0

返事をありがとう。コンストラクターの外にあるメソッドをオーバーライドしますか? JTable –

+0

に沿って、それは私が@DouglasGrealisをしたものです。私のJTableクラスはTableModelListenerになり、私のテーブルモデルはそれをTableModelListenerとして追加しました。 – user1283704

関連する問題