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

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

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

    swing storm

    java桌面應用

    導航

    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(15)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    swing components-windows ScrollPane

    windows的scrollPane與table頭持平,這個功能以前我一直都不直到怎么實現,最近茅舍頓開,時間不充裕,做的還不完善,有興趣可以看一下。

    效果:
    AzWindowsScrollPane.gif

    代碼:
    package?azure.ui.swing.components.scrollPane;

    import?java.awt.BorderLayout;
    import?java.awt.Dimension;
    import?java.awt.Rectangle;
    import?java.awt.event.AdjustmentEvent;
    import?java.awt.event.AdjustmentListener;
    import?java.awt.event.MouseWheelEvent;
    import?java.awt.event.MouseWheelListener;

    import?javax.swing.JFrame;
    import?javax.swing.JLabel;
    import?javax.swing.JPanel;
    import?javax.swing.JScrollBar;
    import?javax.swing.JScrollPane;
    import?javax.swing.JTable;
    import?javax.swing.JViewport;
    import?javax.swing.UIManager;
    import?javax.swing.border.EmptyBorder;

    /**
    ?*?
    @author?Azure
    ?*?
    @version?1.0?31/03/07
    ?
    */
    public?class?AzWindowsScrollFrame?extends?JFrame?implements?AdjustmentListener?{
    ????JScrollBar?vScrollBar?
    =?new?JScrollBar();

    ????JScrollBar?hScrollBar?
    =?new?JScrollBar();

    ????JTable?table;

    ????
    public?AzWindowsScrollFrame()?{
    ????????init();
    ????}

    ????
    public?static?void?main(String[]?args)?{
    ????????
    try?{
    ????????????UIManager
    ????????????????????.setLookAndFeel(
    "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    ????????}?
    catch?(Exception?e)?{
    ????????????System.err.println(
    "Something?went?wrong!");
    ????????}
    ????????AzWindowsScrollFrame?sf?
    =?new?AzWindowsScrollFrame();
    ????????sf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ????????sf.setLocationRelativeTo(
    null);
    ????????sf.setSize(
    new?Dimension(300,?200));
    ????????sf.setVisible(
    true);
    ????}

    ????
    private?void?init()?{
    ????????
    this.setLayout(new?BorderLayout());

    ????????Object?data[][]?
    =?{?{?"one",?"1",?"swing"?},?{?"two",?"2",?"is"?},
    ????????????????{?
    "three",?"3",?"very"?},?{?"four",?"4",?"nice"?},
    ????????????????{?
    "five",?"5",?"swing"?},?{?"six",?"6",?"is"?},
    ????????????????{?
    "seven",?"7",?"very"?},?{?"eight",?"8",?"nice"?},
    ????????????????{?
    "nine",?"9",?"swing"?},?{?"ten",?"10",?"is"?}?};
    ????????Object?headers[]?
    =?{?"col1",?"col2",?"col3"?};
    ????????table?
    =?new?JTable(data,?headers);
    ????????table.setPreferredSize(
    new?Dimension(500,?300));

    ????????JPanel?panel?
    =?new?JPanel();
    ????????panel.setLayout(
    new?BorderLayout());
    ????????JScrollPane?scrollPane?
    =?new?JScrollPane(table);
    ????????scrollPane
    ????????????????.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
    ????????scrollPane
    ????????????????.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    ????????scrollPane.setBorder(
    new?EmptyBorder(0,?0,?0,?0));
    ????????panel.setBorder(
    new?EmptyBorder(0,?0,?0,?0));
    ????????panel.add(scrollPane,?BorderLayout.CENTER);

    ????????JPanel?hPanel?
    =?new?JPanel(new?BorderLayout());

    ????????hScrollBar.setOrientation(JScrollBar.HORIZONTAL);
    ????????
    int?visibleAmount?=?100;
    ????????hScrollBar.setVisibleAmount(visibleAmount);
    ????????hPanel.add(hScrollBar,?BorderLayout.CENTER);

    ????????JLabel?vConerlabel?
    =?new?JLabel();
    ????????vConerlabel.setMinimumSize(
    new?Dimension(15,?10));
    ????????vConerlabel.setPreferredSize(
    new?Dimension(15,?10));
    ????????vConerlabel.setBorder(
    new?EmptyBorder(0,?0,?0,?0));
    ????????hPanel.add(vConerlabel,?BorderLayout.EAST);

    ????????vScrollBar.addAdjustmentListener(
    this);
    ????????
    int?hVisibleAmount?=?60;
    ????????vScrollBar.setVisibleAmount(hVisibleAmount);
    ????????vScrollBar.setUnitIncrement(
    60);
    ????????vScrollBar.setValueIsAdjusting(
    true);

    ????????vScrollBar.addMouseWheelListener(
    new?MouseWheelListener()?{
    ????????????
    public?void?mouseWheelMoved(MouseWheelEvent?e)?{
    ????????????????vScrollBar.setValue(vScrollBar.getValue()
    ????????????????????????
    +?e.getWheelRotation()?*?60);
    ????????????}
    ????????});
    ????????hScrollBar.addAdjustmentListener(
    this);
    ????????hScrollBar.addMouseWheelListener(
    new?MouseWheelListener()?{
    ????????????
    public?void?mouseWheelMoved(MouseWheelEvent?e)?{
    ????????????????hScrollBar.setValue(hScrollBar.getValue()
    ????????????????????????
    +?e.getWheelRotation()?*?60);
    ????????????}
    ????????});

    ????????
    this.add(hPanel,?BorderLayout.SOUTH);
    ????????
    this.add(panel,?BorderLayout.CENTER);
    ????????
    this.add(vScrollBar,?BorderLayout.EAST);
    ????}

    ????
    public?void?adjustmentValueChanged(AdjustmentEvent?e)?{
    ????????
    if?(e.getSource()?==?vScrollBar)?{
    ????????????scrollToTableV(table,?e.getValue());

    ????????}?
    else?if?(e.getSource()?==?hScrollBar)?{
    ????????????scrollToTableH(table,?e.getValue());
    ????????}
    ????}

    ????
    public?void?scrollToTableH(JTable?table,?int?value)?{
    ????????
    if?(!(table.getParent()?instanceof?JViewport))?{
    ????????????
    return;
    ????????}
    ????????JViewport?viewport?
    =?(JViewport)?table.getParent();
    ????????Rectangle?viewRect?
    =?viewport.getViewRect();
    ????????Rectangle?rect?
    =?new?Rectangle(value?*?table.getWidth()?/?90,
    ????????????????(
    int)?viewRect.getY(),?10,?10);

    ????????rect.setLocation(rect.x?
    -?viewRect.x,?rect.y?-?viewRect.y);
    ????????viewport.scrollRectToVisible(rect);
    ????}

    ????
    public?void?scrollToTableV(JTable?table,?int?value)?{
    ????????
    if?(!(table.getParent()?instanceof?JViewport))?{
    ????????????
    return;
    ????????}
    ????????JViewport?viewport?
    =?(JViewport)?table.getParent();
    ????????Rectangle?viewRect?
    =?viewport.getViewRect();
    ????????Rectangle?rect?
    =?new?Rectangle((int)?viewRect.getX(),?value
    ????????????????
    *?table.getHeight()?/?90,?10,?10);

    ????????rect.setLocation(rect.x?
    -?viewRect.x,?rect.y?-?viewRect.y);
    ????????viewport.scrollRectToVisible(rect);
    ????}

    }

    posted on 2007-03-31 01:37 azure 閱讀(1997) 評論(2)  編輯  收藏

    評論

    # re: swing components-windows ScrollPane 2007-04-01 14:36 turbochen

    這樣做的意義何在?  回復  更多評論   

    # re: swing components-windows ScrollPane[未登錄] 2007-04-01 17:27 azure

    研究一下而已,呵呵  回復  更多評論   


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲午夜久久久影院伊人| 精品亚洲A∨无码一区二区三区| 人禽伦免费交视频播放| 久久被窝电影亚洲爽爽爽| 18禁止看的免费污网站| 成人婷婷网色偷偷亚洲男人的天堂| 亚洲欧洲一区二区三区| 91大神免费观看| 黄色免费在线网址| 亚洲午夜精品一区二区公牛电影院| 国产在线不卡免费播放| 人妻无码一区二区三区免费 | 日本特黄特色免费大片| 在线免费视频你懂的| 亚洲深深色噜噜狠狠网站| 久久精品国产精品亚洲| 国产精品无码免费播放| 久久不见久久见免费影院www日本| 亚洲中文字幕无码av在线| 中文字幕专区在线亚洲| 午夜高清免费在线观看| 久久99精品免费视频| 午夜免费国产体验区免费的| 亚洲国产成人精品无码区在线网站| 不卡精品国产_亚洲人成在线| 毛片a级毛片免费观看品善网| 无码午夜成人1000部免费视频| 狠狠综合亚洲综合亚洲色| 亚洲精品视频在线免费| 亚洲夜夜欢A∨一区二区三区| 成年女人毛片免费视频| 在线观看的免费网站无遮挡| 国产精品视频全国免费观看| 亚洲国产综合AV在线观看| 亚洲精品综合久久中文字幕| 亚洲免费观看视频| 亚洲国产精品自产在线播放| 全免费A级毛片免费看网站| 18禁黄网站禁片免费观看不卡| 中文字幕在线免费播放| 无码日韩人妻AV一区免费l|