<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中文无码乱人伦| 色婷婷亚洲十月十月色天| 国产一级片免费看| 亚洲爆乳精品无码一区二区三区| 男人和女人高潮免费网站| 亚洲国产精品不卡毛片a在线| 无套内射无矿码免费看黄| 亚洲精品tv久久久久久久久久| 国产99精品一区二区三区免费| 亚洲伊人久久综合中文成人网| rh男男车车的车车免费网站| 国产精品亚洲精品日韩已满| 18禁在线无遮挡免费观看网站| 日产亚洲一区二区三区| 国产情侣激情在线视频免费看| 亚洲午夜电影在线观看| 免费下载成人电影| 亚洲一卡2卡3卡4卡5卡6卡 | 亚欧在线精品免费观看一区 | 亚洲欧美国产精品专区久久| 妞干网在线免费观看| 无套内射无矿码免费看黄| 中文亚洲AV片在线观看不卡| 四虎成人精品永久免费AV| 亚洲H在线播放在线观看H| 日韩免费毛片视频| 中国一级毛片免费看视频| 亚洲黄色免费网址| 日本免费人成视频播放 | 亚洲高清免费在线观看| 亚洲精品无码mⅴ在线观看| 亚洲国产a级视频| 91在线老王精品免费播放| 亚洲av纯肉无码精品动漫| 亚洲精品无码久久一线| 国产va精品免费观看| eeuss免费天堂影院| 亚洲avav天堂av在线网爱情| 亚洲中文字幕无码爆乳av中文| 久视频精品免费观看99|