易码技术论坛

 找回密码
 加入易码
搜索
查看: 504397|回复: 14

JMenu被Canvas这个组件挡住了=。=怎么办啊?

[复制链接]
发表于 2006-10-30 12:32:06 | 显示全部楼层
是Java?
发表于 2006-10-30 13:17:50 | 显示全部楼层
Canvas是重量级的组件,与轻量级组件一起使用时会把它们覆盖掉...

解决方法:用JPanel来代替Canvas...
 楼主| 发表于 2006-10-30 17:46:28 | 显示全部楼层
呃 确实是可以用JPanel来替代
或者用Menu不用JMenu

说来 轻量级和重量级有什么区分呢?除了会挡住=。=

另外=。=我有个ico文件想要在一个Dialog里显示 该怎么做?
发表于 2006-10-30 18:04:18 | 显示全部楼层
Most of the issues related to mixing AWT and Swing components are related  to the mixing of so-called heavyweight and lightweight components.  A heavyweight component is one that is associated with its own  native screen resource (commonly known as a peer). A lightweight component is one that "borrows" the screen resource of an ancestor  (which means it has no native resource of its own -- so it's "lighter").

如无必要,尽量不要使用重量级组件。因为它们可能会表现出平台相关性。
不要在同一个容器(Container)中混用重量级组件和轻量级组件,因为当重量级组件和轻量级组件发生重叠时,总是重量级组件把轻量级组件覆盖住

ICO文件...貌似JAVA中不支持ICO吧...把它转换为gif文件再用吧。
发表于 2006-10-30 19:49:56 | 显示全部楼层
ICO就是要放到窗口左上角的那个地方的图图的说,GIF怎么做到哦..
 楼主| 发表于 2006-10-30 20:27:41 | 显示全部楼层
呃 确实是不支持ico呢。。。

说来 awt和swing哪个比较好呢?好似awt都是直接调用系统API而swing是绘制的吧?
发表于 2006-10-30 21:11:32 | 显示全部楼层
引用第5楼yzk03702006-10-30 19:49发表的“”:
ICO就是要放到窗口左上角的那个地方的图图的说,GIF怎么做到哦..

Java又不是VC。。。没有ICO一说

左上角那个东东就是一个Image对象而已。用JAVA支持的图形格式都可以,比如jpg,gif,bmp...etc

例子:

import javax.swing.*;
import java.awt.*;
public class Test extends JFrame
{
  public Test()
  {
    //标题
    super("测试图标");
    //设置大小和位置
    setBounds(20,20,500,300);
    //点击关闭按钮可以关闭窗口
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //加入图标
    Image icon=new ImageIcon("icon.jpg").getImage();
    setIconImage(icon);
  }
  public static void main(String [] args)
  {
    Test f=new Test();
    f.setVisible(true);
  }
}
发表于 2006-10-30 21:19:51 | 显示全部楼层
引用第6楼不炫耀会死星人2006-10-30 20:27发表的“”:
呃 确实是不支持ico呢。。。

说来 awt和swing哪个比较好呢?好似awt都是直接调用系统API而swing是绘制的吧?

这个,貌似Swing出来后就基本没人用awt来写GUI了...
因为awt不仅功能较少,与平台有关(同一个程序在不同的操作系统上运行的外观不一样),而且在不同的平台上可能会有不同的bug。

当然,awt速度快一些。但丑陋很多。
Swing编写的程序可以很方便的切换为 Windows,Mac等风格,还可以自己做。

现在JAVA上写GUI程序一般有两种选择:SUN的标准库Swing以及 IBM的SWT(SWT类似于AWT,速度比Swing快,但非纯Java---用JNI实现的---其它偶也不清楚)
 楼主| 发表于 2006-10-30 21:31:00 | 显示全部楼层
呃 为什么我发现swing严重不符合我的审美观念=v=?要怎么切换风格啊?
 楼主| 发表于 2006-10-30 21:45:02 | 显示全部楼层
SWT好似是系统有的就直接调用系统API 没有的就绘制 感觉像是awt和swing的杂和。。。
发表于 2006-10-30 21:57:15 | 显示全部楼层
因为....Swing默认的是SUN做的一种叫Metal的风格....不得不说这种风格很难看....
你在main方法一开始的地方加上这个:

try{
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){
}

就会让显示出来的组件以当前平台的风格来显示。

想知道更多的东西,自己去看java文档的UIManager类。
另外,如果你还没装Java6.0,建议装一下,java6.0中加入了“皮肤”的概念...可以按自己喜好比较容易的作出个性化的风格。
 楼主| 发表于 2006-10-30 22:28:46 | 显示全部楼层
呃。。。。6.0。。。。。
发表于 2006-11-2 09:50:28 | 显示全部楼层
当初就是混着用……结果混乱不堪……Java这套东西不好使……
 楼主| 发表于 2006-10-29 23:20:30 | 显示全部楼层 |阅读模式
  我在一个JFrame里添加了一个JMenuBar和一个Canvas=。=但是JMenu的弹出菜单被挡到了。。。

用Menu就不会被挡住的说 可是用JMenu就被挡到了=v=看不到~
 楼主| 发表于 2010-6-13 00:23:06 | 显示全部楼层
我是来挖坟的
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-20 08:48 , Processed in 0.010898 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表