<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

    知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

      BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

    這個例子是JTable可以選擇行和列,界面如圖


    代碼如下

    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JCheckBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.ListSelectionModel;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.TableModel;

    public class A7_SelectionModel extends JFrame {
        
    public A7_SelectionModel() {
            
    super("Selection Model Test");
            setSize(
    450350);
            
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            TableModel m 
    = new AbstractTableModel() {
                
    public int getColumnCount() {
                    
    return 10;
                }

                
    public int getRowCount() {
                    
    return 10;
                }

                
    public Object getValueAt(int r, int c) {
                    
    return "" + (r+1)*(c+1);
                }            
            };
            
            
    final JTable jt = new JTable(m);
            
            
    this.getContentPane().add(new JScrollPane(jt), BorderLayout.CENTER);
            
            JPanel controlPanel, buttonPanel, columnPanel, rowPanel;
            
            buttonPanel 
    = new JPanel();
            
    final JCheckBox cellBox, columnBox, rowBox;
            cellBox 
    = new JCheckBox("Cells", jt.getCellSelectionEnabled());
            columnBox 
    = new JCheckBox("Columns", jt.getColumnSelectionAllowed());
            rowBox 
    = new JCheckBox("Rows", jt.getRowSelectionAllowed());
            
            cellBox.addActionListener(
    new ActionListener() {
                
    public void actionPerformed(ActionEvent e) {
                    jt.setCellSelectionEnabled(cellBox.isSelected());
                    columnBox.setSelected(jt.getColumnSelectionAllowed());
                    rowBox.setSelected(jt.getRowSelectionAllowed());
                }
            });
            columnBox.addActionListener(
    new ActionListener() {
                
    public void actionPerformed(ActionEvent e) {
                    jt.setColumnSelectionAllowed(columnBox.isSelected());
                    cellBox.setSelected(jt.getCellSelectionEnabled());
                }
            });
            rowBox.addActionListener(
    new ActionListener() {
                
    public void actionPerformed(ActionEvent e) {
                    jt.setRowSelectionAllowed(rowBox.isSelected());
                    cellBox.setSelected(jt.getCellSelectionEnabled());
                }
            });
            
            buttonPanel.add(
    new JLabel("Selections allowed:"));
            buttonPanel.add(cellBox);
            buttonPanel.add(columnBox);
            buttonPanel.add(rowBox);
            
            columnPanel 
    = new JPanel();
            ListSelectionModel csm 
    = jt.getColumnModel().getSelectionModel();
            JLabel columnCounter 
    = new JLabel("(Selected Column INdices Go Here)");
            csm.addListSelectionListener(
    new SelectionDebugger(columnCounter, csm));
            columnPanel.add(
    new JLabel("Selected columns:"));
            columnPanel.add(columnCounter);
            
            rowPanel 
    = new JPanel();
            ListSelectionModel rsm 
    = jt.getColumnModel().getSelectionModel();
            JLabel rowCounter 
    = new JLabel("(Selected Row INdices Go Here)");
            rsm.addListSelectionListener(
    new SelectionDebugger(columnCounter, csm));
            rowPanel.add(
    new JLabel("Selected Rows:"));
            rowPanel.add(rowCounter);
            
            controlPanel 
    = new JPanel(new GridLayout(01));
            controlPanel.add(buttonPanel);
            controlPanel.add(columnPanel);
            controlPanel.add(rowPanel);
            
            
    this.getContentPane().add(controlPanel, BorderLayout.SOUTH);
            
        }
        
    class SelectionDebugger implements ListSelectionListener  {
            JLabel debugger;
            ListSelectionModel model;
            
    public SelectionDebugger(JLabel l, ListSelectionModel m) {
                
    this.debugger = l;
                
    this.model = m;
            }
            
    public void valueChanged(ListSelectionEvent e) {
                
    if (!e.getValueIsAdjusting()) {
                    StringBuffer buf 
    = new StringBuffer();
                    
    int[] selecton = getSelectonIndices(model.getMinSelectionIndex(),
                            model.getMaxSelectionIndex());
                    
    if (selecton.length == 0) {
                        buf.append(
    "NONE");
                    } 
    else {
                        
    for (int i = 0; i < selecton.length - 1; i++) {
                            buf.append(selecton[i]);
                            buf.append(
    ",");
                        }
                        buf.append(selecton[selecton.length 
    - 1]);
                    }
                    debugger.setText(buf.toString());
                }
            }
            
            
    protected int[] getSelectonIndices(int start, int stop) {
                
    if ((start == -1|| (stop == -1)) {
                    
    return new int[0];
                }
                
                
    int guesses[] = new int[stop - start + 1];
                
    int index = 0;
                
    for (int i = start; i <= stop; i++) {
                    
    if (model.isSelectedIndex(i)) {
                        guesses[index
    ++= i;
                    }
                }
                
    int realthing[] = new int[index];
                System.arraycopy(guesses, 
    0, realthing, 0, index);
                
    return realthing;
            }
            
            
        }
        
    public static void main(String args[]) {
            AbmUtils.setLookAndFeel();
            A7_SelectionModel s 
    = new A7_SelectionModel();
            s.setVisible(
    true);
        }
    }


    </script>

    posted on 2008-02-29 16:32 helloworld2008 閱讀(1321) 評論(0)  編輯  收藏 所屬分類: java - swing

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲日本成本人观看| 亚洲美女视频免费| 亚洲另类无码专区首页| 亚洲色四在线视频观看| 亚洲第一页日韩专区| 亚洲三级视频在线| 亚洲av无码av制服另类专区| xvideos亚洲永久网址| 日本道免费精品一区二区| 国产精品亚洲专区无码牛牛| 亚洲一区二区影视| 亚洲va在线va天堂va不卡下载| 免费看黄视频网站| 色欲色香天天天综合网站免费| 久久一区二区免费播放| 老司机午夜免费视频| 亚洲精品色在线网站| 美女视频黄免费亚洲| 亚洲午夜国产精品| 亚洲欧洲中文日产| 亚洲熟妇色自偷自拍另类| 亚洲AV区无码字幕中文色| 亚洲日韩激情无码一区| 国产成人精品久久亚洲高清不卡 | 国产人妖ts在线观看免费视频| 最新猫咪www免费人成| 拍拍拍又黄又爽无挡视频免费| 免费观看美女用震蛋喷水的视频| 99在线免费观看视频| 一级毛片在线免费看| 99视频在线精品免费| 91精品成人免费国产片| 3d动漫精品啪啪一区二区免费| 在线美女免费观看网站h| 一区二区三区在线免费观看视频| 日亚毛片免费乱码不卡一区| 视频一区二区三区免费观看| 成年免费大片黄在线观看com| 一区二区三区免费视频网站| 久久不见久久见免费影院www日本| 国产免费内射又粗又爽密桃视频|