2012-10-04 18 views
5

Estoy trabajando en un proyecto basado en la interfaz gráfica de usuario y necesito agregar un jtable en un jpanel. Pero no entiendo por qué la tabla no se muestra cuando se agrega con un scrollpane. También cuando se agrega sin scroll, el encabezado de la tabla no se muestra. Gracias por cualquier ayuda ... siguiente es el código que estoy utilizando ..JTable no visible cuando se agrega con JScrollPane

import javax.swing.*; 
import javax.swing.table.*; 
import java.sql.*; 
import java.awt.*; 
import java.awt.event.*; 

public class FrmAddEditDN extends JDialog{ 
    JButton JBUpdate = new JButton(new ImageIcon("images/save.png")); 
    JButton JBReset = new JButton("Reset",new ImageIcon("images/reset.png")); 
    JButton JBCancel = new JButton("Cancel",new ImageIcon("images/cancel.png")); 

    JLabel JLPic1 = new JLabel(); 
    JLabel JLBanner = new JLabel("Please fill-up all the required fields."); 

public FrmAddEditDN(boolean ADD_STATE,JFrame OwnerForm,Connection srcCN,String srcSQL){ 
     super(OwnerForm,true); 
     cnAEDN = srcCN; 
     ADDING_STATE = ADD_STATE; 
     JPanel JPContainer = new JPanel(); 
     JPContainer.setLayout(null); 
       String[] columnNames = { 
        "Sr No","Invoice No","Invoice Date","Consignee","Description","Basic Amount","Invoice Amount","Payment Received", 
       "EFT Date","Payment Earlier Received","Comm. @ %","Comm.Claim @ %","Comm. Received","Date","Bank","Remarks"}; 
       String[][] data = { 
        {"","","","","","","","","","","","","","","",""} 
    }; 
       DefaultTableModel DTModel = new DefaultTableModel(data,columnNames); 
       JTable table = new JTable(5,16); 
       table.setBounds(15,295,screen.width-40,150); 
       table.setRowHeight(30); 
       table.setForeground(Color.black); 
       table.setBackground(Color.white); 
       JTableHeader header = table.getTableHeader(); 
       header.setForeground(Color.red); 
       header.setBackground(Color.green); 
       table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
       table.getColumnModel().getColumn(0).setPreferredWidth(2); 
       table.getColumnModel().getColumn(1).setPreferredWidth(50); 
       JScrollPane tableContainer = new JScrollPane(); 
       tableContainer.setViewportView(table); 

       JPContainer.add(tableContainer); 

       getContentPane().add(JPContainer); 
     setSize(screen.width-5,screen.height-45); 
     setResizable(false); 
     setLocation(0,0); 
    } 
} 
+1

Cuando no se agrega a un panel de desplazamiento, debe agregar manualmente el encabezado de la tabla también. Esto se menciona en la clase 'JTable' javadoc – Robin

Respuesta

7

lo necesario para pasar Component mientras se crea una JScrollPane.

JScrollPane scrollPane = new JScrollPane(table); 
JPContainer.add(scrollPane); 
+0

Bingo! Absolutamente correcto :) – paulsm4

+0

Entonces en realidad cuál es el propósito del método add() con ** JScrollPane **. Intenté usar como ** scrollPane.add (table) ** para el caso anterior, pero no funcionó. ¿Cuándo deberíamos usar el método add() con JScrollPane ??? –

Cuestiones relacionadas