Java 如何获取JTable中的JComboBox值?
我尝试了这部分代码,从Java 如何获取JTable中的JComboBox值?,java,swing,jtable,awt,jcombobox,Java,Swing,Jtable,Awt,Jcombobox,我尝试了这部分代码,从JTable中的JComboBox中获取值,但它不起作用 我想获取所选单元格的值,以便插入到DB中 package fx; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.even
JTable
中的JComboBox
中获取值,但它不起作用
我想获取所选单元格的值,以便插入到DB中
package fx;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class ComboInTable extends JFrame {
private static JFrame jFrame;
public ComboInTable() throws HeadlessException {
jFrame=this;
JTable table=new JTable();
DefaultTableModel model= (DefaultTableModel) table.getModel();
model.addColumn("A",new Object[]{"item1"});
model.addColumn("B",new Object[]{"item2"});
JScrollPane scrollPane=new JScrollPane(table);
String[] value1=new String[]{"1","2","3"};
String[] value2=new String[]{"a","b","c"};
TableColumn col0=table.getColumnModel().getColumn(0);
TableColumn col1=table.getColumnModel().getColumn(1);
col0.setCellEditor(new MyComboBoxEditor(value1));
col0.setCellRenderer(new MyComboBoxRenderer(value1));
col1.setCellEditor(new MyComboBoxEditor(value2));
col1.setCellRenderer(new MyComboBoxRenderer(value2));
JComboBox comboBox=new JComboBox(value1);
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED)
{
System.out.println(e.getItem());
}
}
});
jFrame.setLayout(new FlowLayout());
jFrame.add(scrollPane);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jFrame.setSize(400, 400);
jFrame.setVisible(true);
}
public static void main(String[] args) {
ComboInTable comboInTable=new ComboInTable();
}
}
我有mycomboxEditor
和mycomboxRenderer
类
package fx;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
public class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
public MyComboBoxRenderer(String[] items) {
super( items);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if(isSelected){
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
}
else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setSelectedItem(value);
return this;
}
}
package fx;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
public class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
我尝试了这部分代码,从JTable中的JComboBox获取值
您无法从组合框中获取值
您可以使用getValueAt(…)
方法从JTable
获取值
我也不知道为什么要创建自定义渲染器和编辑器。只需使用表提供的默认渲染器/编辑器
首先阅读上Swing教程中的部分。您将发现一个示例,演示如何使用组合框作为编辑器
我尝试了这部分代码,从JTable中的JComboBox获取值
您无法从组合框中获取值
您可以使用getValueAt(…)
方法从JTable
获取值
我也不知道为什么要创建自定义渲染器和编辑器。只需使用表提供的默认渲染器/编辑器
首先阅读上Swing教程中的部分。您将发现一个示例,演示如何使用组合框作为编辑器