[英]How to add the JcomboBox in JTable using Java?
我浏览一个csv文件,并将文件内容加载到Jtable。 我想在JTable的每一行中添加JcomboBox。
这是我的工具供您参考:
我不知道如何在row的每一列中添加ComboBox。请帮助我解决此问题。感谢您的帮助
这是我的代码供您参考。
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();
}
}
谢谢问候,Dinesh
您是否需要在特定的单元格中设置组合框? 您可以设置使用JCombobox的单元格渲染器。 与此类似: http : //www.java2s.com/Tutorial/Java/0240__Swing/UsingaJComboBoxinaCellinaJTableComponent.htm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.