java - JTable header not showing still -


i have looked , found many people weren't putting table scrollpane. though nest table scrollpane frame still fails show header. there else i'm missing ? thanks

public class gui extends jframe {  abstracttablemodel model; jtable table;     public void start(abstracttablemodel model) {      this.model = model;     table=new jtable(model){         @override          public boolean iscelleditable(int arg0, int arg1) {              return false;          }      };        table.setautoresizemode(jtable.auto_resize_off);     tablecolumn column = null;         (int = 0; < model.getcolumncount(); i++) {             column = table.getcolumnmodel().getcolumn(i);             column.setpreferredwidth(120);             column.setmaxwidth(300);             column.setminwidth(50);         }              jscrollpane pane = new jscrollpane(table);           pane.setpreferredsize(new dimension(900,900));          add(pane);          setlayout(new flowlayout());          setvisible(true);          setdefaultcloseoperation(exit_on_close);          pack(); } 

based on code , having add missing functionality, code works...

enter image description here

import java.awt.borderlayout; import java.awt.dimension; import java.awt.eventqueue; import java.awt.flowlayout; import javax.swing.jframe; import static javax.swing.jframe.exit_on_close; import javax.swing.jscrollpane; import javax.swing.jtable; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception; import javax.swing.table.abstracttablemodel; import javax.swing.table.defaulttablemodel; import javax.swing.table.tablecolumn;  public class gui extends jframe {      public static void main(string[] args) {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                 }                  gui frame = new gui();                 frame.start(new defaulttablemodel(new object[]{"a", "b", "c"}, 10));             }         });     }      abstracttablemodel model;     jtable table;      public void start(abstracttablemodel model) {         this.model = model;         table = new jtable(model) {             @override             public boolean iscelleditable(int arg0, int arg1) {                 return false;             }          };          table.setautoresizemode(jtable.auto_resize_off);         tablecolumn column = null;         (int = 0; < model.getcolumncount(); i++) {             column = table.getcolumnmodel().getcolumn(i);             column.setpreferredwidth(120);             column.setmaxwidth(300);             column.setminwidth(50);         }          jscrollpane pane = new jscrollpane(table);         pane.setpreferredsize(new dimension(900, 900));          add(pane);         setlayout(new flowlayout());         setvisible(true);         setdefaultcloseoperation(exit_on_close);         pack();      } } 

this leads 2 broad assumptions...

  1. you're tablemodel doesn't have columns
  2. you're tablemodel doesn't have column names...

for example, tablemodel no column names...

no column names

personally...

  • i wouldn't use flowlayout this, borderlayout give better results
  • pack frame before make visible
  • set layout before add components sometimes, things can messed up...

for example...

setlayout(new flowlayout()); // i'd use `borderlayout` add(pane); setdefaultcloseoperation(exit_on_close); pack(); setvisible(true); 

Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -