<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

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


    網站導航:
     
    主站蜘蛛池模板: 国产精品亚洲片在线| 日本免费一二区在线电影| 亚洲一区二区三区自拍公司| 爱情岛论坛免费视频| 美女黄网站人色视频免费国产| 中文字幕在线日亚洲9| 日韩版码免费福利视频| 亚洲18在线天美| 暖暖免费高清日本一区二区三区| 亚洲欧洲无卡二区视頻| 国产嫩草影院精品免费网址| 免费无毒a网站在线观看| 亚洲?v无码国产在丝袜线观看| 一区二区三区免费在线观看| 精品亚洲视频在线观看| baoyu122.永久免费视频| 久久精品亚洲日本佐佐木明希| 无码国产精品一区二区免费vr| 日韩精品一区二区亚洲AV观看| 中文字幕成人免费视频| 亚洲中文字幕在线无码一区二区| a级毛片无码免费真人| 久久亚洲精品11p| 中文字幕亚洲无线码| 一级毛片不卡片免费观看| 中中文字幕亚洲无线码| 国产人成免费视频| a在线视频免费观看| 久久久久精品国产亚洲AV无码| www亚洲精品少妇裸乳一区二区| 中文字幕免费观看全部电影| 亚洲理论精品午夜电影| 日韩视频在线免费观看| 成人片黄网站色大片免费观看cn | 少妇性饥渴无码A区免费 | 国产在线观看免费视频播放器| 日韩精品无码免费视频| 久久久无码精品亚洲日韩京东传媒| 精品免费国产一区二区三区| 中国毛片免费观看| 亚洲五月丁香综合视频|