永中首页 | 产品聚焦 | 销售渠道 | 服务支持 | 教育专栏 | 二次开发 | 在线订购 | 产品注册 | 免费下载 | 新闻中心 | 关于永中
发新话题
打印

请教java老手,挑战永中office的GUI开发工程师

请教java老手,挑战永中office的GUI开发工程师

熟悉java的开发人员都知道,放在JScrollpane里面的JTable的竖滚动条风格和windows的风格不一样,java的竖滚动条上端不会和table头持平,而是和table体持平,请教java老手和永中的开发工程师,如何将放在JScrollpane里面的JTable的竖滚动条和table头持平,呵呵

TOP

自己用横、竖两个滚动条模拟,很简单,我已经用了,不过不能给你源吗-抱歉

TOP

原谅我的愚钝,可否贴上一个图片证明该法是可行的?谢谢~

TOP

别搞这么大个名字来赫人

兄弟,搞这么大个名字把人赫一跳......要是你觉得swing的某个模块不适合你,你就自己写,反正也有源代码..........swing这一块里面折射出的模式很多,好好钻研,前途无量.................

TOP

这是我模拟word的分页显示做的演示程序,里面放jtable没问题
附件: 您所在的用户组无法下载或查看附件

TOP

谢谢tedted老师的指点,这个问题困扰我好久了,其实我把名字弄大了,因为我太着急了,最后对我冒昧表示道歉
技术上交流请留言:http://azure.blogbus.com/

TOP

不好意思,我仔细的看了一下JScrollPane和JScrollBar的工作原理,我说的这种情况,即:让JTable的竖滚动条和JTable持平,但是滚动的时候头不滚动  
是不可能做到的,它们的外观和它们的viewPort绑死了,这是它们的内在实现,我们无法通过它们提供给我们的API来改变它们的外观。
就像一辆跑车一样,swing也有它的引擎极限,swing api并不是可以实现任何vc可以实现的东西,vc也不能实现任何swing可以实现的东西
技术上交流请留言:http://azure.blogbus.com/

TOP

还想请教一个问题:
除了setCursor()方法所提供的鼠标形状,如何改变鼠标的形状为其它形状,比如一个象游戏里的漂亮手指形图片
技术上交流请留言:http://azure.blogbus.com/

TOP

还有最后一个问题:
如何不通过本地api实现异形JFrame和JDialog窗体
技术上交流请留言:http://azure.blogbus.com/

TOP

最后一个问题解决了,例子代码如下(来自http://forum.java.sun.com
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;


public class TransparantWindow extends JFrame
{
  Graphics tig;
  Image img;
  Image tim;
  Robot r;

  public TransparantWindow()
  {
    super("Fruit");

    setUndecorated(true);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setBounds(170, 170, 100, 100);
    try
    {
      r = new Robot();
    }
    catch (AWTException awe)
    {
      System.out.println("robot excepton occurred");
    }
    capture();

    WindowDragger dragger = new WindowDragger();
    addMouseMotionListener(dragger);
    addMouseListener(dragger);
    addFocusListener(new FocusAdapter()
      {
        public void focusGained(FocusEvent e)
        {
          setSize(0, 0);
          capture();
          setSize(100, 100);
        }
      });
    setVisible(true);
  }

  public void capture()
  {
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    img = r.createScreenCapture(new Rectangle(0, 0, d.width, d.height));
  }

  public void captureX()
  {
    Rectangle rect = getBounds();
    setVisible(false);

    Image xmg = r.createScreenCapture(rect);
    img.getGraphics().drawImage(xmg, rect.x, rect.y, rect.width, rect.height,
                                null);
    setVisible(true);
  }

  public static void main(String[] args)
  {
    new TransparantWindow();
  }

  public void paint(Graphics g)
  {
    Rectangle rect = g.getClipBounds();
    if (tim == null)
    {
      tim = createImage(getWidth(), getHeight());
      tig = tim.getGraphics();
    }
    if (!rect.getSize().equals(getSize()))
    {
      captureX();
    }
    else
    {
      paintP(g);
    }
  }

  public void paintP(Graphics g)
  {
    tig.drawImage(img, 0, 0, getWidth(), getHeight(), getX(), getY(),
                  getX() + getWidth(), getY() + getHeight(), null);

    tig.setColor(Color.orange);
    tig.fillOval(10, 20, 70, 80);
    tig.setColor(Color.green);
    tig.fillOval(21, 16, 20, 10);
    tig.fillOval(40, 02, 11, 21);
    g.drawImage(tim, 0, 0, null);
  }

  public void update(Graphics g)
  {
    this.paint(g);
  }

  private class BackgroundRefresher extends FocusAdapter
  {
    /**
     * @see java.awt.event.FocusAdapter#focusGained(java.awt.event.FocusEvent)
     */
    public void focusGained(FocusEvent e)
    {
      setSize(0, 0);
      capture();
      setSize(100, 100);
    }
  }

  private class WindowDragger implements MouseListener, MouseMotionListener
  {
    private Point mp;

    /**
     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
     */
    public void mouseClicked(MouseEvent e)
    {
    }

    /**
     * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
     */
    public void mouseDragged(MouseEvent e)
    {
      if (mp == null)
      {
        return;
      }

      Point p = e.getPoint();
      int x = (getX() + p.x) - mp.x;
      int y = (getY() + p.y) - mp.y;
      setLocation(x, y);
      paintP(getGraphics());
    }

    /**
     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
     */
    public void mouseEntered(MouseEvent e)
    {
    }

    /**
     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
     */
    public void mouseExited(MouseEvent e)
    {
    }

    /**
     * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
     */
    public void mouseMoved(MouseEvent e)
    {
    }

    /**
     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
     */
    public void mousePressed(MouseEvent e)
    {
      mp = e.getPoint();
    }

    /**
     * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
     */
    public void mouseReleased(MouseEvent e)
    {
      mp = null;
    }
  }
}
技术上交流请留言:http://azure.blogbus.com/

TOP

改换鼠标图案:
                java.awt.Toolkit toolkit=Toolkit.getDefaultToolkit();
                java.awt.Image image=toolkit.getImage("E:\\cursor.gif");
                java.awt.Cursor cursor=toolkit.createCustomCursor(image,new Point(0,0),"MyCursor");
                setCursor(cursor);
技术上交流请留言:http://azure.blogbus.com/

TOP

可以通过“Toolkit.createCustomCursor(Image cursor,Point hotSpot,String name)”方法创建自定义的Cursor对象!

TOP

发新话题