2012-10-04 57 views
5

tôi đang làm việc trên một dự án dựa trên gui và tôi cần phải thêm một jtable trong một jpanel.But tôi không nhận được lý do tại sao bảng không được hiển thị khi thêm với một scrollpane.Also khi thêm không có scrollpane, tiêu đề bảng không được hiển thị. Nhờ sự giúp đỡ ... Tiếp theo là mã tôi đang sử dụng ..JTable không hiển thị khi thêm với 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

Khi không được thêm vào scrollpane, bạn cũng cần phải thêm tiêu đề bảng theo cách thủ công. Điều này được đề cập trong lớp JTable' javadoc – Robin

Trả lời

7

Bạn cần phải vượt qua Component trong khi tạo ra một JScrollPane.

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

Bingo! Hoàn toàn chính xác :) – paulsm4

+0

Sau đó, thực sự mục đích của phương thức add() với ** JScrollPane ** là gì. Tôi đã cố gắng sử dụng như ** scrollPane.add (bảng) ** cho trường hợp trên, nhưng nó không hoạt động. khi nào chúng ta nên sử dụng phương thức add() với JScrollPane ??? –

Các vấn đề liên quan