帮小妹看看这个是什么问题?或你有更好方法解决(谁的方法最好,我会把100分直接送你))

xierong2011 xierong2011 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;

public class Test extends JFrame {


private JTable table;
private DefaultTableModel cardModel;
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test frame = new Test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame
*/
public Test() {
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane, BorderLayout.CENTER);

table = new JTable();
scrollPane.setViewportView(table);
//
initTable();
tableVal();
table.addMouseListener(new MouseSelect());
}
private void initTable(){
cardModel = new DefaultTableModel(6,3);
table.setModel(cardModel);
table.getColumnModel().getColumn(0).setHeaderValue("1");
table.getColumnModel().getColumn(1).setHeaderValue("2");
table.getColumnModel().getColumn(2).setHeaderValue("3");
table.setRowHeight(25);
}
public void tableVal() {
String[] content={"性别","星期"};
JComboBox contentType = new JComboBox();
for(int i=0;i<content.length;i++){
contentType.addItem(content[i]);
}
DefaultCellEditor contentcell = new DefaultCellEditor(contentType);
TableColumnModel tcm = table.getColumnModel();
tcm.getColumn(0).setCellEditor(contentcell);

}
private class MouseSelect implements MouseListener {

@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
Object target = e.getSource();
if (target instanceof JTable) {
int row=table.getSelectedRow();
int col=table.getSelectedColumn();
String name=table.getValueAt(row, col).toString();
if(col==0){
if(name.equals("性别")){
String[] data={"男","女"};
JComboBox dataBox = new JComboBox();
for(int i=0;i<data.length;i++){
dataBox.addItem(data[i]);
}
DefaultCellEditor dataCell = new DefaultCellEditor(dataBox);
TableColumnModel dataTcm = table.getColumnModel();
dataTcm.getColumn(1).setCellEditor(dataCell);
}
if(name.equals("星期")){
String[] date={"星期1","星期2","星期3","星期4"};
JComboBox dateBox = new JComboBox();
for(int i=0;i<date.length;i++){
dateBox.addItem(date[i]);
}
DefaultCellEditor dateCell = new DefaultCellEditor(dateBox);
TableColumnModel dateTcm = table.getColumnModel();
dateTcm.getColumn(1).setCellEditor(dateCell);
}
}
}


}

@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}

}

}

想实现的功能是: 点击JTable的任意行第一列“性别”时 第二列的该行显示“男”“女”
点击“星期”时,显示"星期1","星期2","星期3","星期4"
不要拘泥上面的例子,寻找好的方法 代码最好稳定 高效 简洁 ...
...全文
评论 43
收藏 已收藏
分享
返回顶部
xierong2011
Java SE 62,621 成员 307,251 内容