<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 閱讀(1331) 評論(0)  編輯  收藏 所屬分類: java - swing

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


    網站導航:
     
    主站蜘蛛池模板: 中文字幕乱码免费看电影| 国产高清对白在线观看免费91 | 永久免费视频网站在线观看| 亚洲精品午夜无码专区| 国产男女爽爽爽免费视频| 亚洲精品乱码久久久久久不卡| 最新亚洲人成无码网www电影| 国产成人精品免费直播| 国产偷国产偷亚洲高清人| 伊人久久亚洲综合影院| www免费插插视频| 亚洲永久精品ww47| 无码专区AAAAAA免费视频| 亚洲最大的成网4438| 亚洲国产精品免费观看| 亚洲乱码国产乱码精华| 无码国产亚洲日韩国精品视频一区二区三区 | 免费一级毛片在线播放放视频 | 在线观看的免费网站无遮挡| 亚洲成在人线电影天堂色| 日韩av无码成人无码免费| 激情无码亚洲一区二区三区| 亚洲成aⅴ人片久青草影院| 99在线视频免费观看| 亚洲国产精品一区二区久| 好吊妞在线成人免费| 一级毛片免费视频网站| 日韩亚洲人成在线综合日本| 免费在线观看h片| 国产成人精品久久亚洲高清不卡| 亚洲中文字幕丝袜制服一区| 男人都懂www深夜免费网站| 亚洲日本乱码一区二区在线二产线| 四虎www免费人成| 99精品免费视品| 国产成人亚洲精品| 久久精品亚洲乱码伦伦中文| 91视频免费网址| 日本一区二区三区免费高清在线 | 亚洲综合av一区二区三区不卡| 免费看男女下面日出水视频|