java-Java.awt类是如何实现图形化的呢?

问题描述

Java.awt类是如何实现图形化的呢?

一直想知道java.awt内是如何与机器本身实现功能的,查看了下awt里的源码。首先查看了颜色color类,发现该类实际上的功能是定义了一个int对象value,然后给1600万种颜色编分别给个value值,也就是说color类就是一个存有颜色编号值得类,本身并不实现机器的颜色切换功能。
然后我又看了下各种容器的代码,结果从swing的JFrame看到awt里最基的component,基本上所有组件的结构基本上都是定义了如color类的成员变量,初始化也仅仅是更改这些成员变量的值,也就是说初始化的容器只是给容器内的颜色啊,布局管理啊等基本结构设值,而这些基本结构类也只是包含了一些数值。那么,当我们将这些数值编译完成,机器读取的时候是如何实现图形化的呢。

解决方案

底层是操作系统的绘图库实现绘图的,再底层是显示卡的驱动。
int的value其实是一个argb值,我们知道一个int有32bit,我们分为4个字节,每个字节表示一个颜色分量(红、绿、蓝、透明度),用0~255表示这个分量的浓度。

解决方案二:

追问:

1,按以上说法,编译出来的字节码也只是调用了操作系统的代码,难道说编译码本生不能直接与CPU对话,并将指令传递给显卡本身么,还是说可以是可以,但这样代码量太大,不如直接使用操作系统和显驱已经编译好的类库。
2,component类只继承object类,那么这个类本身和我们写的普通类没任何区别,而里面只有一些层次啊,颜色啊,布局啊的成员变量,这是个本身毫无关联的成员变量组成的类,为什么java一执行,就能生成图形了呢(调用显驱图形库)。难道说编译器针对component类的编译方式与普通类的不同,那么我将component类的代码全部复制,做一个除了类名都一样的类,再初始化该类还能生成图形么。如果不能的话就说明编译器针对component实行了不同操作,那component就是图形方面的object了,我们只能继承衍生component里已有的接口了,无法再“创造”component里没有的接口是么。谢谢。

解决方案三:

这个涉及到系统底层了,你这些类全部都是应用层代码。具体显示是需要驱动层代码的。驱动层代码与硬件的直接显示其实还有硬件抽象层(类似这些意思);
java生成的class文件离cpu能够直接识别的指令中间差了很多层次的。如果写应用层代码这些东西真的不需要深究,因为相当复杂。

解决方案四:

“java生成的class文件离cpu能够直接识别的指令中间差了很多层次的。如果写应用层代码这些东西真的不需要深究,因为相当复杂。”
追问:
class文件再经过解释器出来的不是应该就已经是汇编类的代码了吗,汇编与机械码不应该只是替换下就行了么。

时间: 2024-08-01 19:23:03

java-Java.awt类是如何实现图形化的呢?的相关文章

java中类与类关系的UML图与代码表现

类与类之间存在以下关系: 泛化(Generalization) 依赖(Dependency) 关联(Association)   聚合(Aggregation) 一.泛化(Generalization) 定义:表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系.一般化的关系是从子类指向父类的,与继承或实现的方法相反. 具体表现:父类 父类实例 = new 子类() UML图,Animal类与Tiger类,Dog类的泛化关系: 代码表现:  代码如下 复制代码 class A

如何根据java源代码生成类图?

问题描述 如何根据java源代码生成类图? **我自己做了一个java模拟记事本,功能也比较齐全.但是要求画出类图,这个怎么画啊?我去百度上搜了,都不实用,总是遇到这样或那样的问题.请问应如何画这个类图,或者怎样由java代码生成类图?**

Rational Rose正逆向工程(类图转Java代码,Java代码转类图)

 一,正向工程     1.设置默认语言为Java,Tools->Options->Notation->default:选择Java.         2.设置环境变量ClassPath,Tools->Java/j2ee->Project   Specification->ClassPath:具体路径设置为正向工程生成java文件要保存的目录,一般为项目的src目录.         3.打开设计好的类图,选中要生成的Java文件的类,然后通过Tools->J

Java中的类反射机制

一.反射的概念 :反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩.其中LEAD/LEAD++ .OpenC++ .MetaXa和OpenJava等就是基于反射机制的语言.最近,反射机制也被应用到了视窗系统.操作系统和文件系统中. 反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学

解析Java图形化编程中的文本框和文本区_java

在图形界面中,文本框和文本区是用于信息输入输出的组件.文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是ActionListener. 文本框处理程序的基本内容有以下几个方面: 声明一个文本框名. 建立一个文本框对象. 将文本框对象加入到某个容器. 对需要控制的文本框对象注册监视器,监听文本框的输入结束(即输入回车键)事件. 一个处理文本框事件的方法,完成对截获事件进行判断和处理. JTextField类的主要构造

详解Java图形化编程中的鼠标事件设计_java

鼠标事件的事件源往往与容器相关,当鼠标进入容器.离开容器,或者在容器中单击鼠标.拖动鼠标时都会发生鼠标事件.java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionListener接口.MouseListener接口 MouseListener接口能处理5种鼠标事件:按下鼠标,释放鼠标,点击鼠标.鼠标进入.鼠标退出.相应的方法有: (1) getX():鼠标的X坐标 (2) getY():鼠标的Y坐标 (3) getModifiers():获取鼠标的左键或右键.

Java图形化编程中的键盘事件设计简介_java

键盘事件的事件源一般丐组件相关,当一个组件处于激活状态时,按下.释放或敲击键盘上的某个键时就会发生键盘事件.键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListener(监视器).实现KeyListener接口有3个: keyPressed(KeyEvent e):键盘上某个键被按下: keyReleased(KeyEvent e):键盘上某个键被按下,又释放: keyTyped(KeyEvent e):keyPressed和keyReleased两个方法的组合

有关java图形化的问题。

问题描述 有关java图形化的问题. 今天刚开始学图形化,学了JFrame,发现一个很怪的地方.我定义一个类,如果我继承了JFrame,再在某个方法里写下JFrame jf=new JFrame():Container container=jf.getContentPane();之后,无论我在里面标签怎么设计,出来的都是空白的,我试了很久,发现不继承JFrame就不出现空白,为什么?

java 图形化 怎样设置每一个JTabbedPane的内容

问题描述 java 图形化 怎样设置每一个JTabbedPane的内容 对java swing这块实在不熟悉.开发需要,不得不实现一下 已有代码如下,需要在JTabblePane中实现一个柱状图: package swingTest; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.b