「java中gui编程」Java gui开发
本篇文章给大家谈谈java中gui编程,以及Java gui开发对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java里面GUI编程红色框里面的new是什么意思什么用法什么操作类做参数吗?
我仔细分析了下, 可能楼主有2方面的疑惑,一是语法方面的疑惑,二是语义上的疑惑.
一: 语法层面的解释:
执行一个方法,需要传入一个"对象"作为参数 ,java中创建对象就需要使用new关键字
// 写法一: 好理解
FlowLayout layout=new FlowLayout();
f.setLayout(layout);
//写法二: 代码简洁
f.setLayout(new FlowLayout());
二:关于语义的解释:
第一条语句
f.setLayout(new FlowLayout()); //设置为流布局.组件默认从左到右排列
因为Frame 窗体组件, 默认的布局方式是 BorderLayout (边界布局) ; 组件会按照上北,下南,左西,右东的方式进行布局
关于边界布局的参考代码如下
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
public class LayoutDemo1 {
public static void main(String[] args) {
Frame f = new Frame("my awt");
System.out.println(f.getLayout());
//系统打印输出: java.awt.BorderLayout[hgap=0,vgap=0]
//从上面的可以了解到f的默认布局是BorderLayout ,水平间距0,垂直间距还是0
//BorderLayout就是按照,上北,下南,左西,右东 来放置组件的
//并且中间的组件,还会自动填满..
f.setSize(300, 300);
f.setLocation(300, 200);
Button d = new Button("东");
Button x = new Button("西");
Button n = new Button("南");
Button b = new Button("北");
Button z = new Button("中");
f.add(d,BorderLayout.EAST);//把按钮组件添加到指定的位置
f.add(x,BorderLayout.WEST);
f.add(n,BorderLayout.SOUTH);
f.add(b,BorderLayout.NORTH);
f.add(z);//如果添加到中间, 那么可以省略BorderLayout.CENTER参数
//中间的按钮,会填充满整个空间
//f.add(new Button("新按钮"),BorderLayout.CENTER);
//在同一区域,放置多个组件,那么后添加的组件会覆盖之前添加的组件
f.setVisible(true);
}
}
代码f.setLayout(new FlowLayout()); 就是修改默认的边界布局为流布局.默认从左到右排列
关于流布局的效果图
关于流布局的代码如下
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
public class LayoutDemo2 {
public static void main(String[] args) {
Frame f = new Frame("my awt");
f.setLayout(new FlowLayout()); //设置为流布局.默认从左到右排列
f.setSize(300, 300);
f.setLocation(300, 200);
Button d = new Button("1");
Button x = new Button("2");
Button n = new Button("3");
Button b = new Button("4");
Button z = new Button("5");
f.add(d);
f.add(x);
f.add(n);
f.add(b);
f.add(z);
f.setVisible(true);
}
}
解释第二条语句
f.addWindowListener(new MyWin());
因为窗体会产生一些事件, 我们需要对响应的事件进行对应的处理.
比如窗口首次打开时, 会触发窗口打开事件
窗口右上角的关闭按钮被点击时, 会触发窗口关闭ing事件
窗口显示出来,又会触发窗口激活事件
f.addWindowListener 就表示添加一个窗口事件的反应器, 可以根据窗口事件来做出相关的反应
参考代码
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class LayoutDemo3 {
public static void main(String[] args) {
Frame f = new Frame("my awt");
f.setLayout(new FlowLayout());
f.setSize(300, 300);
f.setLocation(300, 200);
Button z = new Button("中");
f.add(z);
f.addWindowListener(new MyWin());
// 这里需要1个WindowListener 的实现类,
// 我们可以自己去写一个,也可以使用系统提供的WindowAdapter
f.setVisible(true);
}
}
class MyWin extends WindowAdapter{
@Override
public void windowClosing(WindowEvent e) {
System.out.println("关");
System.exit(0); // 关闭 ,一般在这里添加关闭代码
//添加了关闭代码, 那么点击窗口右上角的关闭按钮时,窗口就会消失了,程序就结束了
}
@Override
public void windowActivated(WindowEvent e) {
System.out.println("活");
}
@Override
public void windowOpened(WindowEvent e) {
System.out.println("开");
}
}
java的gui编程,高手来救啊
监听的目前没有啥好的想法
关于按键的有点,给你分享一下,理解不对的话,见谅啊。
你的问题现在是,先按住上方向键,坦克向上走,按住上键,又按住左键了,坦克向左走,此时放开左键了,坦克没有继续向上走,而需要你重新按向上键。
如果我理解对了,你继续看,不对就算了、、、
如果是上面的问题,你程序的处理应该是监听到Key按下事件,然后根据Key的值,向不同的方向移动,监听到Key放开事件,就停止移动
如果想继续移动,可以通过程序去判断:
1:在监听类,中定义一个MapInteger 保存按下的Key
2:监听到Key按下事件,把Key保存到Map中,并向改方向移动。
3:监听到Key放开事件,把Key从Map中移除,并判断Map是否为空,为空停止移动,如果不为空,获取Map中的Key值,继续向Key所指向方向移动
注:这个方法只支持最多按两个键,多了的话,比如现在按住3个键,放开一个了,不处理的话,因为Map不是排序的,随便获取一个Key的话,移动的方向可能不是自己想要的,如果要支持多键的,可以使用LinkedMap,他可以保存按键的保存顺序,比如按键的顺序为a,b,c 放开c的时候,迭代Map,第一个一定是b,你可以向b方向移动,放开b的时候,迭代Map,获取就是a了
java的GUI编程,如何关闭一个窗体,而不是退出整个程序
JFrame的关闭不像Frame,点关闭按钮自己会关闭,但是那样做不好.可以用setDefaultCloseOperation(int operation);
其中operation有以下几种
DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。
DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。
EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。
默认情况下,该值被设置为 HIDE_ON_CLOSE。更改此属性的值将导致激发属性更改事件,其属性名称为 "defaultCloseOperation"。
java中gui编程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java gui开发、java中gui编程的信息别忘了在本站进行查找喔。