2017-11-02 3 views
0

I Durchsuchen Sie eine CSV-Datei und laden Sie den Inhalt der Datei in Jtable. Ich möchte die JcomboBox in jeder Zeile der JTable hinzufügen.Wie füge ich die JcomboBox in JTable mit Java hinzu?

Hier ist mein Werkzeug für Ihre Referenz:

https://i.stack.imgur.com/7xBHD.jpg

Ich weiß nicht, wie die ComboBox in jeder Spalte von row.please hinzuzufügen mir zu helfen, dieses Problem .Any Hilfe zu lösen, ist

geschätzt

Hier ist mein Code für Ihre Referenz ....

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Insets; 
import java.awt.Label; 
import java.awt.List; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.util.ArrayList; 

import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.SwingConstants; 
import javax.swing.filechooser.FileNameExtensionFilter; 
import javax.swing.table.DefaultTableModel; 

import com.csvreader.CsvReader; 

public class GUI { 

    private JPanel dialog = null; 
    private AboutDialog adlg; 

    public void addComponentsToPane() { 

     final JTextField txtfldcsvpth = new JTextField("Select a folder"); 
     final JTextField txtsimprepname = new JTextField("Select a folder"); 
     final JButton Btnbrowsecsv = new JButton("Select file"); 
     final JButton BtnsimpRep = new JButton("Create SimpRep"); 
     final JTable table = new JTable(){ 
      final long serialVersionUID = 1L; 
      public boolean isCellEditable(int row,int column) {     
        return false;    
      }; 
     }; 

     BtnsimpRep.setEnabled(true); 

     dialog.setLayout(new GridBagLayout()); 
     GridBagConstraints gBC = new GridBagConstraints(); 

     gBC.anchor = GridBagConstraints.LINE_START; 
     gBC.fill = GridBagConstraints.HORIZONTAL; 
     gBC.insets = new Insets(3, 3, 3, 3); 
     gBC.weightx = 1; 
     gBC.weighty = 0; 


     /******************************Browse Csv File***************************************/ 
     JLabel label1 = new JLabel("Input File"); 
     label1.setHorizontalAlignment(SwingConstants.RIGHT); 
     label1.setHorizontalTextPosition(SwingConstants.RIGHT); 
     label1.setPreferredSize(new Dimension(100, Btnbrowsecsv 
       .getPreferredSize().height)); 
     gBC.gridx = 0; 
     gBC.gridy = 0; 
     dialog.add(label1, gBC); 
     //jtextfield for CsvPath 
     gBC.gridx = 1; 
     gBC.gridy = 0; 
     txtfldcsvpth.setPreferredSize(new Dimension(200, Btnbrowsecsv 
       .getPreferredSize().height)); 
     txtfldcsvpth.setEditable(false); 
     dialog.add(txtfldcsvpth, gBC); 
     //Jbutton for Csv Browsing.. 
     gBC.gridx = 2; 
     gBC.gridy = 0; 
     Btnbrowsecsv.setToolTipText("Select folder containing STEP files"); 
     Btnbrowsecsv.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       // TODO Auto-generated method stub 
       String selectedFile = fileChooserMethod(); 
       if (selectedFile != null) { 
        txtfldcsvpth.setText(selectedFile); 
        try{ 
        BufferedReader br = new BufferedReader(new FileReader(new File(selectedFile))); 
        ArrayList <String[]> elements = new ArrayList<String[]>(); 
        String line = null; 
        while((line = br.readLine())!=null) { 
         String[] splitted = line.split(","); 
         elements.add(splitted); 
        } 
        br.close(); 
        JOptionPane.showMessageDialog(null, elements); 
        String[] columNames = new String[] {"Serial No","PartNumber", "Quantity"}; 

        Object[][] content = new Object[elements.size()][3]; 
        for(int i=1; i<elements.size(); i++) { 
         content[i][0] = i; 
         content[i][1] = elements.get(i)[1].trim(); 
         content[i][2] = elements.get(i)[0].trim(); 
         //content[i][2] = elements.get(i)[2].trim(); 
         // content[i][3] = elements.get(i)[3].trim(); 
        } 
        JOptionPane.showMessageDialog(null, content.length); 
        table.setModel(new DefaultTableModel(content,columNames)); 
        }catch(Exception e){ 

        } 
       } 
      } 
     }); 
     dialog.add(Btnbrowsecsv, gBC); 
     /******************************JTable for CsvGrid***************************************/ 


     JScrollPane js=new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     js.setPreferredSize(new Dimension(300 + Btnbrowsecsv 
       .getPreferredSize().width, 400)); 
     js.setVisible(true); 
     js.setHorizontalScrollBar(null); 
     // final JTable jt=new JTable(data,column);  
      table.setCellSelectionEnabled(false); 
      table.setRowSelectionAllowed(false); 
      table.setBorder(BorderFactory.createEtchedBorder()); 
      table.setRowHeight(20); 
      table.setVisible(true); 

      gBC.gridx = 0; 
      gBC.gridy = 1; 
      gBC.gridwidth = 3; 
      dialog.add(js, gBC); 


     /******************************JButton for SimpRepCreation***************************************/ 
     gBC.gridx = 0; 
     gBC.gridy = 4; 
     gBC.gridwidth = 3; 
     BtnsimpRep.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       // TODO Auto-generated method stub 
       boolean allFilesConverted = false; 

      } 
     }); 
     dialog.add(BtnsimpRep, gBC); 


    } 

    public GUI() { 

     // JDialog.setDefaultLookAndFeelDecorated(true); 
     dialog = new JPanel(); 
     // Set up the content pane. 
     addComponentsToPane(); 

     dialog.setSize(dialog.getPreferredSize()); 
     adlg = new AboutDialog(dialog); 

    } 

    /*****************************file choosing method********************************************/ 
    private String fileChooserMethod() { 
     JFileChooser fileChooser = new JFileChooser("."); 
     FileNameExtensionFilter filter = new FileNameExtensionFilter("CSV files", "csv"); 
     fileChooser.setFileFilter(filter); 
     fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 
     fileChooser.setAcceptAllFileFilterUsed(false); 
     int retVal = fileChooser.showDialog(dialog, "Select File"); 
     if (retVal == JFileChooser.APPROVE_OPTION) { 
      return fileChooser.getSelectedFile().getPath(); 
     } else { 
      return null; 
     } 

    } 


    public static Object gettable (String csvPath){ 
     try { 

       BufferedReader br = new BufferedReader(new FileReader(new File(csvPath))); 
       ArrayList <String[]> elements = new ArrayList<String[]>(); 
       String line = null; 
       while((line = br.readLine())!=null) { 
        String[] splitted = line.split(","); 
        elements.add(splitted); 
       } 
       br.close(); 

       Object[][] content = new Object[elements.size()][2]; 

       for(int i=0; i<elements.size(); i++) { 
        content[i][0] = elements.get(i)[0].trim(); 
        content[i][1] = elements.get(i)[1].trim(); 
        //content[i][2] = elements.get(i)[2].trim(); 
        //content[i][3] = elements.get(i)[3].trim(); 
       } 

       return content; 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
       return null; 
      } 
    } 
    public static void main(String[] args) { 
     new GUI(); 
    } 
} 

Dank Grüße, Dinesh

+1

Lesen Sie den Abschnitt aus dem Swing-Lernprogramm auf [Verwenden einer ComboBox als Editor] (https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#combobox) für ein funktionierendes Beispiel, um loszulegen. – camickr

Antwort

Verwandte Themen