2017-07-26 2 views
1

Je sais, comment ajouter une table à l'intérieur de Scrollpane. Mais j'ai introduit une boucle qui crée un problème alors s'il vous plaît aidez-moi à me débarrasser de ce problème (je veux ajouter une table à l'intérieur de scrollpane) il semble que ça fonctionne quand je ne présente pas de scrollpane de scrollpane, ça ne marche pas. S'il vous plaît aider.Comment ajouter jtable à l'intérieur de jscrollpane?

Merci d'avance.

Voici mon code:

import javax.swing.DefaultCellEditor; 

import javax.swing.JFrame; 

import javax.swing.JScrollPane; 

import javax.swing.JTable; 

import javax.swing.table.DefaultTableModel; 

import javax.swing.table.TableColumn; 

import javax.swing.JPanel; 

import javax.swing.JScrollPane; 

import javax.swing.JFrame; 

import java.awt.*; 

import javax.swing.*; 




    public class Simple 
    { 
    JScrollPane mainScroll; 
    JPanel panel; 
    JFrame frame; 
    public Simple() 
    { 
    frame=new JFrame(); 
    panel=new JPanel(); 
    mainScroll=new JScrollPane(); 
    Object[][] rowData = {}; 
    Object[] columnNames = { "Sr.No","Subject","Department","Status" }; 
    JComboBox mainBox=new JComboBox(); 
    mainBox.addItem("Processed"); 
    mainBox.addItem("Pending"); 
    DefaultTableModel listTableModel; 
    listTableModel = new DefaultTableModel(rowData, columnNames); 
    for (int i = 0; i < 1000; i++) { 
    String main = "" + i; 
    listTableModel.addRow(new Object[] { main, "", "" ,"Choose"}); 
    JTable listTable; 
    listTable = new JTable(listTableModel); 
    TableColumn StatusColumn=listTable.getColumnModel().getColumn(3); 
    StatusColumn.setCellEditor(new DefaultCellEditor(mainBox)); 
    mainScroll.add(listTable); 

    } 


    panel.setLayout(null); 
    mainScroll.setBounds(37, 143, 397, 183); 


    // mainBox.addItem("Processing"); 


    frame.add(panel); 
    panel.add(mainScroll); 
    frame.setSize(600,600); 
    frame.setVisible(true); 


    } 
    public static void main(String arg[]) 
    { 
    new Simple(); 
    } 
    } 
+0

Vous souhaitez ajouter 1000 tables dans la scrollpane? – Lars

+0

1000 lignes non table – kartik

Répondre

0

Au lieu de

mainScroll=new JScrollPane(); 
... 
mainScroll.add(listTable); 

vous devez le faire après la boucle

mainScroll = new JScrollPane(listTable); 

Addendum 1:

Vous devez également tirer la création de la JTable en dehors de la boucle. Dans la boucle, ajoutez uniquement des lignes à la table.

Le cœur de la solution est comme ceci:

JTable listTable = new JTable(listTableModel); 
for (int i = 0; i < 1000; i++) { 
    // add rows to the table 
} 
mainScroll = new JScrollPane(listTable); 

Addendum 2 (avait besoin pensé que je identifiants)

import javax.swing.table.DefaultTableModel; 
import javax.swing.table.TableColumn; 
import java.awt.*; 
import javax.swing.*; 

public class Simple { 
    JScrollPane mainScroll; 
    JPanel panel; 
    JFrame frame; 

    public Simple() { 
     frame=new JFrame(); 
     panel=new JPanel(); 
     Object[][] rowData = {}; 
     Object[] columnNames = { "Sr.No","Subject","Department","Status" }; 
     JComboBox mainBox=new JComboBox(); 
     mainBox.addItem("Processed"); 
     mainBox.addItem("Pending"); 
     DefaultTableModel listTableModel; 
     listTableModel = new DefaultTableModel(rowData, columnNames); 
     JTable listTable = new JTable(listTableModel); 
     for (int i = 0; i < 1000; i++) { 
      String main = "" + i; 
      listTableModel.addRow(new Object[] { main, "", "" ,"Choose"}); 
      TableColumn StatusColumn=listTable.getColumnModel().getColumn(3); 
      StatusColumn.setCellEditor(new DefaultCellEditor(mainBox)); 
     } 

     mainScroll = new JScrollPane(listTable); 

     panel.setLayout(null); 
     mainScroll.setBounds(37, 143, 397, 183); 

     frame.add(panel); 
     panel.add(mainScroll); 
     frame.setSize(600,600); 
     frame.setVisible(true); 

    } 

    public static void main(String arg[]) { 
     new Simple(); 
    } 

} 
+0

toujours cela ne fonctionne pas du tout – kartik

+0

C'est parce que vous devez également tirer la création de la JTable en dehors de la boucle. – jeff6times7

+0

: (Malheureusement, il ne fonctionne pas – kartik