2013-04-06 23 views
10

olarak ayarlama JTable'daki bir satırın yüksekliğini artırabilmek için bir çözüm arıyordum. Tamamen derleyen ve çalıştıran setRowHeight (int int) yöntemini kullanıyorum, ancak hiçbir satır artmadı. Ben satırın getRowHeight (int) yöntemini kullandığımda, yüksekliğini ayarlamak için satır arttığım boyutu yazdırır, bu yüzden neyin yanlış olduğundan emin değilim. Aşağıdaki kod, onu nasıl çözmeye çalıştığımı gösteren kaba bir örnektir.JTable'da satırın yüksekliğini java

Sınıfım JFrame'i genişletiyor.

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) 

Bana nerede yanlış gittiğimi söyleyebilir mi? 1 ila 15 piksel arasındaki satırın yüksekliğini artırmaya çalışıyorum?

veya isterseniz belirli bir satır, kullanım için satır yüksekliğini ayarlamak için:

+2

enter image description here 'O örnek olarak kodumu kesilip, ve hatta vize increase' 100 yüksekliğe arttı ve hala. Bu yüzden sorunu gösteren SSCCE'nizi (http://sscce.org/) göndermelisiniz. Sadece bir şey yaptığını söylediği için aslında yapıyorsun anlamına gelmez. Belki iki tabloyu yanlışlıkla tanımladınız ve aslında görüntülenmeyen bir tablonun özelliğini değiştiriyorsunuz. – camickr

+0

Üzgünüm, kötülükte setRowHeight (int int) yöntemini kullanıyordum, ancak setRowHeight (int) olarak değiştirdim ve şimdi mükemmel çalışıyor. Cevaplar için teşekkürler, çok beğenilen –

cevap

13

0 satırı ilk satırdan ayrılma niyeti boş olduğundan emin değilsiniz. JTable satırları, dizin 0'dan çalıştırın. Sorunları gösteren tam bir örnek (örneğin, SSCCE) gönderebilmeniz en iyisidir. Tamam çalışır Bu basit örnekte karşılaştır:

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

Cevabınız için çok teşekkürler. Kodu düzenlediğiniz gibi, şimdi çalışıyor.Çok takdir –

+0

@DouglasGrealis Hoş Geldiniz, Size yardımcı oldu sevindim! :) – tenorsax

11

kullanabilirsiniz

table.setRowHeight(int par1, int par2);

+0

Cevabınız için teşekkürler. Kodumda gördüğünüz gibi, daha önce onu çağırdım, ancak hiçbir şey yapmıyor gibi görünüyor. –

+0

Model.setRowHeight() 'ı kullanmayı deneyin? – madcrazydrumma

+0

tablo değişkeninden getModel() yöntemini çağırdığınızdan beri orada çalıştım ve derleyici çıktıları: DefaultTableModel konumunda sembol setRowHeight öğesini bulamıyor musunuz? Tekrar teşekkürler –

2

Ayrıca tableModelListener ekleyebilirim?

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

Cevabınız için teşekkür ederiz. Bu yöntemleri kurucu dışında geçersiz kılar mıyım? JTable –

+0

ile birlikte @DouglasGrealis yaptım. JTable sınıfım bir TableModelListener oldu ve tablo modelim bir TableModelListener olarak ekledi. – user1283704

İlgili konular