Cadina 发表于 2006-10-30 12:32:06

是Java?

Eastsun 发表于 2006-10-30 13:17:50

Canvas是重量级的组件,与轻量级组件一起使用时会把它们覆盖掉...

解决方法:用JPanel来代替Canvas...

Anson 发表于 2006-10-30 17:46:28

呃 确实是可以用JPanel来替代
或者用Menu不用JMenu

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

另外=。=我有个ico文件想要在一个Dialog里显示 该怎么做?

Eastsun 发表于 2006-10-30 18:04:18

Most of the issues related to mixing AWT and Swing components are relatedto the mixing of so-called heavyweight and lightweight components.A heavyweight component is one that is associated with its ownnative 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文件再用吧。

JAY 发表于 2006-10-30 19:49:56

ICO就是要放到窗口左上角的那个地方的图图的说,GIF怎么做到哦..

Anson 发表于 2006-10-30 20:27:41

呃 确实是不支持ico呢。。。

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

Eastsun 发表于 2006-10-30 21:11:32

引用第5楼yzk0370于2006-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);
}
}

Eastsun 发表于 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实现的---其它偶也不清楚)

Anson 发表于 2006-10-30 21:31:00

呃 为什么我发现swing严重不符合我的审美观念=v=?要怎么切换风格啊?

Anson 发表于 2006-10-30 21:45:02

SWT好似是系统有的就直接调用系统API 没有的就绘制 感觉像是awt和swing的杂和。。。

Eastsun 发表于 2006-10-30 21:57:15

因为....Swing默认的是SUN做的一种叫Metal的风格....不得不说这种风格很难看....
你在main方法一开始的地方加上这个:

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

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

想知道更多的东西,自己去看java文档的UIManager类。
另外,如果你还没装Java6.0,建议装一下,java6.0中加入了“皮肤”的概念...可以按自己喜好比较容易的作出个性化的风格。

Anson 发表于 2006-10-30 22:28:46

呃。。。。6.0。。。。。

shooting 发表于 2006-11-2 09:50:28

当初就是混着用……结果混乱不堪……Java这套东西不好使……

Anson 发表于 2006-10-29 23:20:30

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

我在一个JFrame里添加了一个JMenuBar和一个Canvas=。=但是JMenu的弹出菜单被挡到了。。。

用Menu就不会被挡住的说 可是用JMenu就被挡到了=v=看不到~

Anson 发表于 2010-6-13 00:23:06

我是来挖坟的
页: [1]
查看完整版本: JMenu被Canvas这个组件挡住了=。=怎么办啊?