向个为大虾请教:
1。如何修改JFrame或JInternalFrame的标题栏的背景颜色、前景颜色、背景图象?
2。如何实现在JFrame或JInternalFrame的标题栏中添加自己的按钮,删除系统原有的按钮?
3。如何实现当我点击某一JPanel时,该JPanel获取焦点并该JPanel边框边为红色?小弟在此先谢谢各位了!

解决方案 »

  1.   

    第1、2个问题:针对JFrame好像不太好解决。貌似JFrame是调用系统API来完成其边框及标题栏的绘制的。而JInternalFrame,我以前也没那样做过,自己去源码中找找吧,也许有解决方案?第3个问题比较好解决,调用其setBorder()方法可加上边框,形如:
    myPanel.setBorder( BorderFactory.createLineBorder( 颜色, 厚度 ) );以前听说过IBM的IFrame,比较强悍,能自定义外观,标题栏中加控件都成,就不说颜色什么的了,还可以轻松实现不规则窗体。楼主有兴趣可以试试。呵呵。
      

  2.   

    [接1楼]
    针对第1、2个问题中的JFrame,一种可行的解决方案就是调用它的setUndecorated( true ),去掉它的窗体修饰,然后自己画个标题栏上去。想怎样画都可以,呵呵。
    JInternalFrame也可以采用类似的思路(它没有setUndecorated()方法,可使用getRootPane().setWindowDecorationStyle( JRootPane.NONE )去掉边框)。不过,这玩艺与JFrame不同,不是顶层容器,应该在Swing的源码中有绘制它的代码。楼主有兴趣可以去摸索一下……
      

  3.   

    是啊,我也遇到同样的问题,并且顺带问一下,JDesktopPane的背景图片,应该怎么设置?
      

  4.   


    重写它的paintComponent()方法,自己画上去.
      

  5.   

    能不能直接在JInternalFrame本身的标题栏上添加自己的按钮啊?怎么实现?最好能给出代码
      

  6.   

    JDesktopPane的背景图片设置try {
    backgroundImg = ImageIO.read(getClass().getResource(
    "UI Mockup 02-1.jpg"));
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    desktopPaneMain = new JDesktopPane() {
    public void paintChildren(Graphics g) {
    if (backgroundImg != null) {
    g.drawImage(backgroundImg, 0, 0, getWidth(), getHeight(),
    this);
    }
    super.paintChildren(g);
    } };