gpt4 book ai didi

java - 如何获取 JTable 内的 JComboBox 值?

转载 作者:行者123 更新时间:2023-12-02 03:29:01 25 4
gpt4 key购买 nike

我尝试过这部分代码从 JTable 内部的 JComboBox 获取值,但它不起作用!

我想获取所选单元格的值以便插入数据库。

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();

}

}

我有 MyComboBoxEditorMyComboBoxRenderer 类。

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));
}

}

最佳答案

I have tried this part of code to get values from a JComboBox that is inside of a JTable,

您无法从组合框中获取值。

您可以使用 getValueAt(...) 方法从 JTable 获取值。

我也不知道您为什么要创建自定义渲染器和编辑器。只需使用表提供的默认渲染器/编辑器即可。

首先阅读关于 How to Use Tables 的 Swing 教程中的部分。您将找到一个演示如何使用组合框作为编辑器的示例。

关于java - 如何获取 JTable 内的 JComboBox 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com