「java游戏窗体」java窗体代码

博主:adminadmin 2023-01-07 16:39:08 2323

今天给各位分享java游戏窗体的知识,其中也会对java窗体代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java的一个窗体建立

我已发送邮件到你的邮箱,我的邮箱是fengxk2004@163.com

Java源程序附后。

本程序的特点是:

(1) 文本框只能输入纯数字;

(2) 界面较美观;

(3) 代码可读性较好,有适当的注释;

(4) 窗体一出现就在桌面居中。

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

public class GuessNumber {

private static final long serialVersionUID = 1L;

JFrame frame;

JTextField txtNum; //文本框

JButton btnStart; //按钮

JLabel lblPrompt;

JLabel lblMessage;

static int source = 0;

static Random rand = new Random();

public GuessNumber(){

frame = new JFrame("Guess Number");

JPanel pnl1, pnl2, pnl3, pnl4;

pnl1 = new JPanel();

pnl1.setLayout(new FlowLayout(FlowLayout.LEFT));

pnl2 = new JPanel();

pnl2.setLayout(new FlowLayout(FlowLayout.LEFT));

pnl3 = new JPanel();

pnl3.setLayout(new FlowLayout(FlowLayout.LEFT));

pnl4 = new JPanel();

pnl4.setLayout(new FlowLayout(FlowLayout.LEFT));

txtNum = new JTextField(10);

btnStart = new JButton("开始");

lblPrompt = new JLabel("htmlbodyI have a number between 1 and 1000 can you guess my number?br/Please enter your first guess./body/html");

lblMessage = new JLabel();

pnl1.add(lblPrompt);

pnl2.add(txtNum);

pnl3.add(lblMessage);

pnl4.add(btnStart);

frame.setLayout(new GridLayout(4, 1));

frame.add(pnl1);

frame.add(pnl2);

frame.add(pnl3);

frame.add(pnl4);

txtNum.addActionListener(this.new TextAction());

txtNum.addKeyListener(this.new KeyAction());

btnStart.addActionListener(this.new ButtonAction());

frame.setSize(400, 200);

frame.setVisible(true);

frame.setLocationRelativeTo(null);

frame.setResizable(false);

}

public static void main(String[] args) {

new GuessNumber();

while((source=rand.nextInt(1000))==0);

}

//按钮单击后的事件处理

class ButtonAction implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

JButton btn = (JButton)e.getSource();

if(btn == btnStart){

while((source=rand.nextInt(1000))==0);

txtNum.setEditable(true);

}

}

}

//文本框按回车后的事件处理

class TextAction implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

JTextField txt = (JTextField)e.getSource();

if(txt != txtNum){

return;

}

int num = Integer.parseInt(txtNum.getText());

if(num == source){

lblMessage.setText("Correct!");

txtNum.setEditable(false);

txtNum.setBackground(frame.getBackground());

}

else if(num source){

lblMessage.setText("Too High");

txtNum.setBackground(Color.red);

}

else{

lblMessage.setText("Too Low");

txtNum.setBackground(Color.blue);

}

}

}

//限制文本框只能输入数字

class KeyAction implements KeyListener{

@Override

public void keyPressed(KeyEvent e) {

}

@Override

public void keyReleased(KeyEvent e) {

}

@Override

public void keyTyped(KeyEvent e) {

int k = e.getKeyChar();

String text = ((JTextField)e.getSource()).getText();

if(!((k47 k 58) || (k==8 || k==KeyEvent.VK_PERIOD))){ //限制只能输入数字

e.setKeyChar((char)KeyEvent.VK_CLEAR);

}

if(text.length() 4){ //限制数值的长度

e.setKeyChar((char)KeyEvent.VK_CLEAR);

}

}

}

}

java怎么做窗体

如果是要进行AWT或者Swing编程需要将类打包成可运行的jar包或者通过工具将jar包打包成exe文件,然后点击就可以直接运行了。下面是一个简单的登录窗口例子:

效果图:

代码:

import java.awt.*;

import java.awt.event.*;

 

public class TestTextField implements ActionListener{

    TextField name;

    TextField password;

     

    public static void main( String args[]) {

        TestTextField ttf = new TestTextField();

        ttf.createUI();

    }

     

    public void createUI(){

        Frame f = new Frame("登录界面");

        f.add(new Label("请输入您的用户信息:"),"North");

         

        Panel p1 = new Panel();

        p1.setLayout(new BorderLayout());     

        Panel p11 = new Panel();

        p11.setLayout(new GridLayout(2,1));

        p11.add(new Label("用户名:"));

        p11.add(new Label("密  码:"));    

        Panel p12 = new Panel();

        p12.setLayout(new GridLayout(2,1));

        name = new TextField(10);

        name.addActionListener(this);

        password = new TextField(10);

        password.setEchoChar('*');

        password.addActionListener(this);

        p12.add(name);

        p12.add(password);     

        p1.add(p11,"West");

        p1.add(p12,"Center");

         

        Panel p2 = new Panel();    

        Button submit = new Button("提交");

        Button reset = new Button("重置");

        submit.addActionListener(this);

        reset.addActionListener(this);

 

        p2.add(submit);

        p2.add(reset);

         

        f.add(p1,"Center");

        f.add(p2,"South");

        f.addWindowListener(new WindowAdapter(){

            public void windowClosing(WindowEvent e){

                System.exit(0);

            }  

        });  

        f.setSize(200,130);

        f.setLocation(300,200);

        f.setVisible( true);

    }

     

    public void actionPerformed(ActionEvent e){

        String s = e.getActionCommand();

        if(s.equals("重置")){

            this.clear();

        }else if(s.equals("提交") || (e.getSource()==name) || (e.getSource()==password)){

            this.submit(); 

        }          

    }  

    public void clear(){

        name.setText("");

        password.setText("");  

    }

    public void submit(){

        String n = name.getText();

        String psw = password.getText();

        System.out.println("用户名:" + n + "\t密码:" + psw);  

    }

}

更多关于窗口的编写请查看:

刚学java想做个小游戏,请教各位高手大侠,如何限制图片在窗体中的移动范围,只能限制坐标吗?好像很麻烦呀

你是在说游戏背景图片吗?有的时候会出界?

如果是的话可以创建两个矩形,一个是背景图片的,一个当前窗体的,只要判断当前窗体的矩形是否被背景图片的矩形包含就能判断背景图片是否出界 原理是一样的啊,你把人物图片也new一个矩形出来,矩形的左上角坐标就是人物左上角的坐标,长和宽就是人物图片的长和宽,然后同理new一个窗体的矩形出来。判断人物的矩形是不是被窗体的矩形包含,包含就表示没有出界。Rectangle(矩形)这个类是有一个方法contains直接比较的。

还有一点就是建议你移动的时候不要立即修改坐标,先搞一个零时变量来记录移动后的位置,用这个位置去做比较,如果没有出界再去修改真实的坐标。

我用JAVA写好了一个窗体游戏,怎么加背景音乐?

复制粘贴,采纳即可。

import java.applet.AudioClip;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.io.File;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import javax.imageio.ImageIO;

import javax.swing.JApplet;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Keygame

{

private final static int WIDTH = 800;

private final static int HEIGHT = 600;

public static void main ( String[] args )

{

JFrame jFrame = new JFrame ();

jFrame.setTitle ("指法练习");

jFrame.setBounds (300, 50, WIDTH, HEIGHT);

jFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

Mypanel mp = new Mypanel (WIDTH, HEIGHT);

jFrame.add (mp);

Thread thread = new Thread (mp);

thread.start ();

jFrame.addKeyListener (mp);

jFrame.setVisible (true);

}

}

class Mypanel extends JPanel implements Runnable, KeyListener

{

private static final long serialVersionUID = 1L;

int width, height;

int x[] = new int[10];

int y[] = new int[10];

char c[] = new char[10];

int score = 1000;

Image bgImage;

AudioClip christmas = loadSound ("christmas.wav");

public Mypanel ( int width, int height )

{

this.width = width;

this.height = height;

try

{

bgImage = ImageIO.read (new File ("christmas.jpg"));

}

catch (IOException e)

{

e.printStackTrace ();

}

for ( int i = 0; i  10; i++ )

{

x[i] = (int) ( Math.random () * 800 );

y[i] = (int) ( Math.random () * 600 );

c[i] = (char) ( Math.random () * 26 + 97 );

}

christmas.loop ();

}

public void paint ( Graphics g )

{

super.paint (g);

g.drawImage (bgImage, 0, 0, width, height, this);

g.setFont (new Font (Font.DIALOG, Font.BOLD, 17));

for ( int i = 0; i  10; i++ )

{

g.setColor (Color.WHITE);

g.drawString (new Character (c[i]).toString (), x[i], y[i]);

g.setColor (Color.green);

g.drawString ("score: " + score, 5, 15);

}

g.dispose ();

}

public void run ()

{

while (true)

{

for ( int i = 0; i  10; i++ )

{

y[i]++;

if (y[i]  800)

{

y[i] = 0;

x[i] = (int) ( Math.random () * 600 );

c[i] = (char) ( Math.random () * 26 + 97 );

score -= 10;

}

}

try

{

Thread.sleep (10);

}

catch (Exception e0000)

{

e0000.printStackTrace ();

}

repaint ();

}

}

public AudioClip loadSound ( String filename )

{

URL url = null;

try

{

url = new URL ("file:" + filename);

}

catch (MalformedURLException e)

{}

return JApplet.newAudioClip (url);

}

@Override

public void keyPressed ( KeyEvent e )

{

char keyChar = e.getKeyChar ();

int nowY = -1;

int index = -1;

for ( int i = 0; i  10; i++ )

{

if (keyChar == c[i])

{

if (y[i]  nowY)

{

nowY = y[i];

index = i;

}

score += 10;

}

}

if (index != -1)

{

y[index] = 0;

x[index] = (int) ( Math.random () * 800 );

c[index] = (char) ( Math.random () * 26 + 97 );

}

}

@Override

public void keyReleased ( KeyEvent e )

{}

@Override

public void keyTyped ( KeyEvent e )

{}

}

java怎么将一个游戏程序窗口在自定义的窗口里运行

一、选择项目右键导出

二、选择java - JAR file - next

三、选择导出路径

四、下一步

五、选择Swing程序,入口frame

六、点击Finish,jar文件导出成功。

紧急!!!用java做一个小游戏有窗口的。。

/*

将以下代码保存为MainFrame.java JDK1.6编译通过

保存我没有做,也不难。方法我已经空下了,你可以自己写写试试.

把txtGuessRecord.getText()的内容写到文件里就行了

*/

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Locale;

import java.util.Random;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import java.util.regex.PatternSyntaxException;

import javax.swing.Box;

import javax.swing.BoxLayout;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFormattedTextField;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.SwingUtilities;

import javax.swing.UIManager;

import javax.swing.text.DefaultFormatter;

public class MainFrame extends JFrame implements ActionListener {

/**

*

*/

private static final long serialVersionUID = 1L;

/**

* @param args

*/

private JLabel lblResult;

private JLabel lblInfo;

private JFormattedTextField txtInput;

private JTextArea txtGuessRecord;

private JButton btnGuess;

private JButton btnRestart;

private JButton btnClear;

private JButton btnSave;

private JComboBox cbType;

// 是否正确

private boolean isRight = false;

// 最大次数

private static final int MAX_TIME = 5;

// 当前猜测的次数

private static final int NUM = 0;

private static final int LETTER = 1;

private static int current_time = 0;

// 当前题目

private char current_puzzle = ' ';

// 用户回答

private char player_answer = ' ';

public MainFrame() {

initComponent();

setPreferredSize(new Dimension(450, 220));

pack();

setVisible(true);

setTitle("猜谜游戏");

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

try {

UIManager

.setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());

SwingUtilities.updateComponentTreeUI(MainFrame.this);

} catch (Exception ex) {

}

}

// 初始化组件

private void initComponent() {

lblResult = new JLabel();

lblInfo = new JLabel("准备好了吗?", JLabel.LEFT);

txtGuessRecord = new JTextArea(5, 30);

btnGuess = new JButton("猜一下");

btnRestart = new JButton("开始");

btnClear = new JButton("清除");

btnSave = new JButton("保存");

String[] item = new String[] { "数字", "字母" };

cbType = new JComboBox(item);

cbType.setMaximumSize(new Dimension(70, 20));

String ps = "[a-zA-Z\\d]";

Pattern p = Pattern.compile(ps);

txtInput = new JFormattedTextField(new RegexFormatter(p));

txtInput.setMaximumSize(new Dimension(55, 20));

txtInput.setMinimumSize(new Dimension(55, 20));

btnRestart.addActionListener(this);

btnGuess.addActionListener(this);

btnClear.addActionListener(this);

btnGuess.setEnabled(false);

txtGuessRecord.setEditable(false);

setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));

Box mainBox = Box.createVerticalBox();

add(mainBox);

setText('?');

mainBox.add(lblResult);

Box box = Box.createHorizontalBox();

box.add(lblInfo);

mainBox.add(box);

Box b = Box.createHorizontalBox();

b.add(txtInput);

Box hBox = Box.createHorizontalBox();

hBox.add(b);

hBox.add(btnGuess);

hBox.add(Box.createHorizontalStrut(3));

hBox.add(btnRestart);

hBox.add(Box.createHorizontalStrut(3));

hBox.add(btnClear);

hBox.add(Box.createHorizontalStrut(3));

hBox.add(btnSave);

hBox.add(Box.createHorizontalStrut(3));

hBox.add(cbType);

mainBox.add(hBox);

JScrollPane scroll = new JScrollPane(txtGuessRecord);

mainBox.add(scroll);

}

@Override

public void actionPerformed(ActionEvent e) {

if (e.getSource() == btnRestart) {

// 重玩

restart();

} else if (e.getSource() == btnGuess)

// 猜

guess();

else if (e.getSource() == btnClear)

// 清除

clear();

else if (e.getSource() == btnSave)

save();

}

// 设置显示答案

private void setText(char c) {

StringBuilder sb = new StringBuilder();

sb.append("htmlfont size = 72 color = redcenter");

sb.append(c);

sb.append("/center/font/html");

lblResult.setText(sb.toString());

}

// 创建随机字符

private char createRandomChar(int type) {

Random rand = new Random();

int low = 0;

int range = 0;

switch (type) {

case NUM:

low = (int) '0';

range = (int) '9' - low + 1;

break;

case LETTER:

low = (int) 'A';

range = (int) 'Z' - low + 1;

break;

}

int i = rand.nextInt(range) + low;

char c = (char) i;

return c;

}

// 向记录框中输出时间

private void recordTime() {

Date date = new Date();

SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",

Locale.US);

String sd = formater.format(date);

txtGuessRecord.append(sd);

}

private void guess() {

if (txtInput.getValue() == null)

return;

// 用户的答案

player_answer = Character.toUpperCase(txtInput.getValue().toString()

.charAt(0));

// 判断答案

if (player_answer  current_puzzle)

txtGuessRecord.append("小了\n");

else if (player_answer  current_puzzle)

txtGuessRecord.append("大了\n");

else {

txtGuessRecord.append("正确\n");

isRight = true;

}

// 猜了一次

++current_time;

// 显示游戏信息

showInfo();

if (isRight || current_time = MAX_TIME)

stop();

}

// 重新开始

private void restart() {

// 记录时间

recordTime();

txtGuessRecord.append("  游戏开始\n");

// 状态清零

current_time = 0;

btnGuess.setEnabled(true);

isRight = false;

current_puzzle = createRandomChar(cbType.getSelectedIndex());

setText('?');

showInfo();

}

// 停止游戏

private void stop() {

btnGuess.setEnabled(false);

setText(current_puzzle);

// 正确的情况

if (isRight) {

String info = String.format("你用了%d次猜对了\n", current_time);

txtGuessRecord.append(info);

} else

// 超过次数的情况

txtGuessRecord.append("你输了\n");

recordTime();

txtGuessRecord.append("  游戏结束\n");

}

// 显示游戏信息

private void showInfo() {

String info = String.format("已经猜了%d次, 还剩 %d次 ", current_time,

MAX_TIME - current_time);

lblInfo.setText(info);

}

// 清空记录框

private void clear() {

txtGuessRecord.setText("");

}

private void save() {

// 尚未实现

}

public static void main(String[] args) {

// TODO Auto-generated method stub

SwingUtilities.invokeLater(new Runnable() {

public void run() {

new MainFrame();

}

});

}

// 正则格式类, 文本框匹配用

class RegexFormatter extends DefaultFormatter {

/**

*

*/

private static final long serialVersionUID = 1L;

private Pattern pattern;

private Matcher matcher;

public RegexFormatter() {

super();

}

public RegexFormatter(String pattern) throws PatternSyntaxException {

this();

setPattern(Pattern.compile(pattern));

}

public RegexFormatter(Pattern pattern) {

this();

setPattern(pattern);

}

public void setPattern(Pattern pattern) {

this.pattern = pattern;

}

public Pattern getPattern() {

return pattern;

}

protected void setMatcher(Matcher matcher) {

this.matcher = matcher;

}

protected Matcher getMatcher() {

return matcher;

}

public Object stringToValue(String text) throws ParseException {

Pattern pattern = getPattern();

if (pattern != null) {

Matcher matcher = pattern.matcher(text);

if (matcher.matches()) {

setMatcher(matcher);

return super.stringToValue(text);

}

throw new ParseException("Pattern did not match", 0);

}

return text;

}

}

}

关于java游戏窗体和java窗体代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。