java程序循环如何退出_java-使用keylistener退出程序而没有循环

我目前正在学习Java,并且正在尝试创建一个屏幕保护程序.最重要的规则是不使用任何循环.另一个关键条件是使用“ x”退出程序,使用“ z”从全屏模式更改为半屏模式.我的第一个倾向是将setDefaultCloseOperation与keylistener一起使用以退出程序,但是我还没有找到任何方法来执行此操作.任何人都可以帮助我了解如何在不使用循环的情况下执行此操作.

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class ScreenSaver1 extends JPanel {

private JFrame frame = new JFrame("FullSize");

private Rectangle rectangle;

boolean full;

ScreenSaver1() {

// Remove the title bar, min, max, close stuff

frame.setUndecorated(true);

// Add a Key Listener to the frame

frame.addKeyListener(new KeyHandler());

// Add this panel object to the frame

frame.add(this);

// Get the dimensions of the screen

rectangle = GraphicsEnvironment.getLocalGraphicsEnvironment()

.getDefaultScreenDevice().getDefaultConfiguration().getBounds();

// Set the size of the frame to the size of the screen

frame.setSize(rectangle.width, rectangle.height);

frame.setVisible(true);

// Remember that we are currently at full size

full = true;

}

// This method will run when any key is pressed in the window

class KeyHandler extends KeyAdapter {

public void keyPressed(KeyEvent e) {

// Terminate the program.

System.exit(0);

}

}

public static void main(String[] args) {

ScreenSaver1 obj = new ScreenSaver1();

}

}

>您不能在该程序中使用任何形式的循环.

>您的成员变量必须是私有的.

>屏幕保护程序类必须继承自JPanel类,并且必须具有JFrame成员变量.

>您的程序必须跟踪其在屏幕上绘制的形状数量,并且在绘制30个形状之后,必须清除屏幕.调用基类(JPanel的)paintComponent方法最容易做到这一点.

>您应该使用Timer对象生成ActionEvent,以驱动屏幕保护程序.将计时器设置为每500毫秒触发一次ActionEvent.这将导致您的actionPerformed方法执行,该方法应该简单地调用repaint方法.调用repaint方法会使您的paintComponent方法执行.

> paintComponent方法将完成所有工作,以选择面板边界内的随机颜色,随机形状和随机位置,然后绘制该形状,并保持已绘制形状的数量.

>创建一个私有方法,该方法在调用时返回随机颜色,该颜色可以是任何可能的随机颜色值.如下所述,将从您的paintComponent方法和KeyListener事件处理程序中调用此方法.

>您的paintComponent方法必须使用至少四种不同的形状,这些形状是您从以下各项中随机选择的:椭圆,矩形,实心椭圆,实心矩形,多边形,直线等.

>您绘制的形状的大小和位置必须根据屏幕的大小而有所不同.每个绘制的形状的至少一部分必须在屏幕上可见.

>使您的屏幕保护程序全屏显示.

>将KeyListener添加到框架. KeyListener必须处理KeyPressed事件.

>按下“ x”键时,KeyListener必须调用System.exit.

>按下“ z”键时,您的KeyListener必须将窗口的大小从全屏大小更改为一半大小(屏幕的宽度和高度的一半),或从一半大小更改为完整大小.也就是说,每按一次“ z”键,显示屏的大小就会在全角和半角之间切换.这需要更改框架的大小并调用重绘.提示:请记住,为了重新绘制背景,您需要将count设置回0.

>按下“ r”键时,您的KeyListener必须将显示背景的颜色更改为随机颜色.这意味着它必须获得新的随机颜色,并使用新的随机颜色调用面板的setBackground.然后,它还必须调用重绘.提示:请记住,为了重新绘制背景,您需要将count设置回0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值