java中的一段,谁能读懂?Component干什么用的
发布网友
发布时间:2022-04-26 09:30
我来回答
共4个回答
热心网友
时间:2022-06-26 19:25
我大概给你写个注释
public void mouseDragged(MouseEvent e) //从这个方法名上看可能是鼠标拖动的方法
{
Component com=null; //Component 应该是java.awt.Component,它是很多awt组件 的父类型
if(e.getSource() instanceof Component) // 如果鼠标事件 e的发生源是Component(或它的子类)
{
com=(Component)e.getSource(); //将变量com赋值为 鼠标事件的发生源
if(com!=this) //如果得到的com变量不是这个类的实例本身(也说明了这个方法所在的类也是一个Component)
move=true; //将标志变量move设为true
e=SwingUtilities.convertMouseEvent(com,e,this); //将鼠标事件转化一下
if(move) //如果标志变量move是true
{
x=e.getX(); //得到这个鼠标事件相对于产生它的组件的X坐标
y=e.getY(); //跟上面一样
int w=com.getSize().width, //得到com组件的宽度(注意com组件就是产生e的组件)
h=com.getSize().height;
com.setLocation(x-w/2,y-h/2); //将com组件移到新的位置(这个位置有什么意义我还是搞不清楚)
}
}
热心网友
时间:2022-06-26 19:26
component 是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例。
Component 类是与菜单不相关的 Abstract Window Toolkit 组件的抽象超类。还可以直接扩展类 Component 来创建一个轻量级组件。轻量级组件是与本机不透明窗口不相关的组件。
序列化
存储对象时,仅保存那些符合 Serializable 协议的 AWT 侦听器,注意这一点很重要。如果具有侦听器的 AWT 对象未标记为可序列化,则在 writeObject 时将会被丢弃。开发人员始终需要考虑序列化对象的意义。需要注意的一种情形是:
import java.awt.*;
import java.awt.event.*;
import java.io.Serializable;
class MyApp implements ActionListener, Serializable
{
BigObjectThatShouldNotBeSerializedWithAButton bigOne;
Button aButton = new Button();
MyApp()
{
// Oops, now aButton has a listener with a reference
// to bigOne!
aButton.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
System.out.println("Hello There");
}
}
在此示例中,通过 aButton 自身进行序列化会使得 MyApp 及其引用的所有内容也都被序列化。问题是,原本没打算序列化的侦听器也被同时序列化了。为分别判断 MyApp 和 ActionListener 是否可序列化,可使用一个嵌套类,如下面示例所示:
import java.awt.*;
import java.awt.event.*;
import java.io.Serializable;
class MyApp java.io.Serializable
{
BigObjectThatShouldNotBeSerializedWithAButton bigOne;
Button aButton = new Button();
static class MyActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("Hello There");
}
}
MyApp()
{
aButton.addActionListener(new MyActionListener());
}
}
注:有关 AWT 和 Swing 所用绘制机制的更多信息,包括如何编写最高效的绘制代码的信息,请参阅 Painting in AWT and Swing。
有关焦点子系统的详情,请参阅 The Java Tutorial 中的 How to Use the Focus Subsystem 部分,以及 Focus Specification 了解更多信息。
另请参见:
序列化表格
热心网友
时间:2022-06-26 19:26
应该是com.setLocation(x+w/2,y+h/2);吧
热心网友
时间:2022-06-26 19:27
这段看起来好像是实现图像拖拽。帖下component的源代码