<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 閱讀(1996) 評論(2)  編輯  收藏

    評論

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

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

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

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


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲人成在线中文字幕| 亚洲精品亚洲人成在线观看下载| 亚洲短视频男人的影院| 巨胸喷奶水www永久免费| 国产成人精品久久亚洲| www一区二区www免费| 亚洲色婷婷综合开心网| 一个人看的免费视频www在线高清动漫 | 国产91色综合久久免费分享| 亚洲狠狠综合久久| 麻花传媒剧在线mv免费观看| 亚洲男人电影天堂| 免费无码黄十八禁网站在线观看| 亚洲码和欧洲码一码二码三码| 免费看片免费播放| 人体大胆做受免费视频| 亚洲色自偷自拍另类小说| 日本高清免费观看| 亚洲性色成人av天堂| 国产精品视频永久免费播放| 欧美日韩亚洲精品| 久久久精品国产亚洲成人满18免费网站 | 四虎永久精品免费观看| 一级做a爰性色毛片免费| 日韩亚洲一区二区三区| **aaaaa毛片免费| 亚洲国产成人久久精品软件| 亚洲毛片av日韩av无码| 久久九九全国免费| 亚洲av无码电影网| 亚洲国产成人精品女人久久久 | 亚洲av日韩av无码| 最近最新中文字幕完整版免费高清| 亚洲av无码有乱码在线观看| 亚洲黄黄黄网站在线观看| 久久久国产精品福利免费| 亚洲熟妇AV乱码在线观看| 亚洲人午夜射精精品日韩| 99久久免费精品视频| 日韩色日韩视频亚洲网站| 亚洲AV无码一区东京热|