读书人

帮小妹看看这个是什么有关问题?或你有

发布时间: 2012-01-31 21:28:41 作者: rapoo

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

Java code
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"
不要拘泥上面的例子,寻找好的方法 代码最好稳定 高效 简洁 ...

[解决办法]
你的需求实现在这里,基本原模原样
http://www.java2s.com/CN/Code/Java/Swing-Components/EachRowwithdifferentEditorExample.htm
[解决办法]
标题太牛了..帮顶了
[解决办法]
能把代码看完的,已经很佩服了。。。。看到这堆swing的代码 头疼。。。。只能祝你好运了。。。。。。
[解决办法]
这个监听TableModel 然后控制一下编辑器就行啦
[解决办法]
看不懂你的需求
[解决办法]
你用2个隐藏的button,width,hight,borderWidth都为0. button_Click触发绑定数据,1个绑定“性别”,1个绑定“星期”.
[解决办法]
表格第二列设置下拉框编辑器
表格增加点击监听,当点击时候让第二列进入编辑
[解决办法]
初学者看代ing...
[解决办法]
分享下解决办法呀。。。。
[解决办法]
想随便选一项刷新一下,失败唉,功夫不行啊 哎~~
Java code
dataBox.setSelectedItem(1);try {        Thread.sleep(1000);        table.repaint();    } catch (InterruptedException e1) {            //e1.printStackTrace();    }
[解决办法]
接分的
[解决办法]
一般女生发的帖子回复率是最高的
[解决办法]
Java code
package ui;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.DefaultCellEditor;import javax.swing.DefaultComboBoxModel;import javax.swing.GroupLayout;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.WindowConstants;import javax.swing.table.TableColumnModel;public class Test extends JFrame implements ActionListener{        private static final long serialVersionUID = 1L;        private JButton btnAdd;    private JButton btnDel;    private JScrollPane splT;    private JTable tblMain;    private JComboBox contentType;    private JComboBox cboItem;    private String[] content;    private String[] sex;    private String[] weekDay;    private TableModel myModel;    TableColumnModel tcm;        public static void main(String args[]) {        java.awt.EventQueue.invokeLater(new Runnable() {            public void run() {                new Test().setVisible(true);            }        });    }        public Test() {        initComponents();    }    private void initComponents() {        String[] headText={"Title","Item"};        myModel=new TableModel(headText);        splT = new JScrollPane();        tblMain = new JTable(myModel);        btnAdd = new JButton("Add");        btnDel=new JButton("Delete");        btnAdd.addActionListener(this);        btnDel.addActionListener(this);        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);        splT.setViewportView(tblMain);                content=new String[]{"性别","星期"};        sex=new String[]{"女","男"};        weekDay=new String[]{"星期1","星期2","星期3","星期4","星期5","星期6","星期7"};        contentType = new JComboBox(content);        cboItem=new JComboBox();        tcm = tblMain.getColumnModel();        tcm.getColumn(0).setCellEditor(new DefaultCellEditor(contentType));        tcm.getColumn(1).setCellEditor(new DefaultCellEditor(cboItem));        contentType.addActionListener(this);        GroupLayout layout = new GroupLayout(getContentPane());        getContentPane().setLayout(layout);                GroupLayout.SequentialGroup one=layout.createSequentialGroup();        one.addComponent(btnDel);        one.addComponent(btnAdd);                GroupLayout.SequentialGroup two=layout.createSequentialGroup();        two.addComponent(splT);                GroupLayout.ParallelGroup ot=layout.createParallelGroup();        ot.addGroup(two);        ot.addGroup(GroupLayout.Alignment.TRAILING, one);                layout.setHorizontalGroup(ot);                GroupLayout.ParallelGroup btnRow=layout.createParallelGroup();        btnRow.addComponent(btnDel);        btnRow.addComponent(btnAdd);                GroupLayout.SequentialGroup c1=layout.createSequentialGroup();        c1.addGroup(btnRow);        c1.addComponent(splT,188, 188,Short.MAX_VALUE);                GroupLayout.ParallelGroup c2=layout.createParallelGroup();        c2.addGroup(c1);                layout.setVerticalGroup(c2);        pack();    }    @Override    public void actionPerformed(ActionEvent e) {        Object target=e.getSource();        String[] content={null,null};        if(target.equals(btnAdd)){            myModel.addRow(content);            tblMain.updateUI();        }        else if(target.equals(contentType)){            String type=(String) contentType.getSelectedItem();            if(null!=type){                if(type.equals("性别")){                    cboItem.removeAllItems();                    cboItem.setModel(new DefaultComboBoxModel(sex));                }                else if(type.equals("星期")){                    cboItem.removeAllItems();                    cboItem.setModel(new DefaultComboBoxModel(weekDay));                }            }        }        else if(target.equals(btnDel)){            myModel.removeRow(tblMain.getSelectedRow());            tblMain.updateUI();        }    }} 


[解决办法]
看上去我的布局有点麻烦 但是这种布局其实挺好的 因为那是自动化的 其次 虽然一点小功能就写个模板类有点小题大作 但是我相信 要用table的话 总有一天要这样做的 希望对妹子有点帮助
[解决办法]
一句小妹,都冲动了~~~~
[解决办法]

探讨
一句小妹,都冲动了~~~~

[解决办法]
混分吧。
[解决办法]
来看标题的 不知道楼主与头像是不是同一个人
[解决办法]
学习了
[解决办法]
Java code
package com.esen.chenf.test;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.event.CellEditorListener;import javax.swing.event.ChangeEvent;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableColumnModel;public class Test23 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 {                    Test23 frame = new Test23();                    frame.setVisible(true);                }                catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the frame     */    public Test23() {        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);        contentcell.addCellEditorListener(new MouseSelect());        TableColumnModel tcm = table.getColumnModel();        tcm.getColumn(0).setCellEditor(contentcell);    }    private class MouseSelect implements CellEditorListener {        public void editingCanceled(ChangeEvent e) {        }        public void editingStopped(ChangeEvent e) {            Object target = e.getSource();            if (target instanceof DefaultCellEditor) {                int row = table.getSelectedRow();                int col = table.getSelectedColumn();                String name = "";                try {                    name = table.getValueAt(row, col).toString();                }                catch (Exception e1) {                }                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);                    }                }            }        }    }    public void mouseEntered(MouseEvent arg0) {        // TODO Auto-generated method stub    }    public void mouseExited(MouseEvent arg0) {        // TODO Auto-generated method stub    }    public void mousePressed(MouseEvent arg0) {        // TODO Auto-generated method stub    }    public void mouseReleased(MouseEvent arg0) {        // TODO Auto-generated method stub    }} 

读书人网 >J2SE开发

热点推荐