「javagui实验」javaGUI实验报告分析

博主:adminadmin 2023-01-09 06:33:10 971

今天给各位分享javagui实验的知识,其中也会对javaGUI实验报告分析进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

GUI程序设计(java)

=====================第一个类=============================

/**

*

* 实现了系统计算器连续按"="和按"+","-","*","/"进行累记运算的模式

*

* */

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class CalculatorFrame extends JFrame {

private JTextField txtDis = new JTextField("0", 16); //显示文本框

private JButton[] btnGrp = new JButton[17]; //17个按钮

private JPanel jpnMain = new JPanel(); //主面板

private JPanel jpnNorth = new JPanel(); //上面板

private JPanel jpnSouth = new JPanel(); //下面板

private double numSaved; //保存的前一个数

private String operator = ""; //保存的运算符号

private String lastPress = ""; //上一次按的按钮("数字","运算符" 或 "等号")

/*构造函数*/

public CalculatorFrame() {

//窗口设置

setTitle("计算器");

setSize(210, 250);

buttonInit(); //按钮初始化

//主面板设置

add(jpnMain);

jpnMain.setLayout(null);

jpnMain.add(jpnNorth);

jpnMain.add(jpnSouth);

jpnMain.add(btnGrp[15]);

btnGrp[15].setBounds(8, 180, 188, 30); //添加“=”按钮

//上面板设置

jpnNorth.setBounds(8, 10, 190, 30);

jpnNorth.add(txtDis);

txtDis.setHorizontalAlignment(JTextField.RIGHT); //设置文本右对齐

txtDis.setEditable(false);

//下面板设置

jpnSouth.setBounds(8, 60, 190, 120);

jpnSouth.setLayout(new GridLayout(4, 4));

addSouthJpn(); //添加17个按钮

//添加监听器

addListener();

}

/*17个按钮显示值初始化*/

public void buttonInit() {

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

btnGrp[i] = new JButton("" + i);

}

btnGrp[10] = new JButton(".");

btnGrp[11] = new JButton("+");

btnGrp[12] = new JButton("-");

btnGrp[13] = new JButton("*");

btnGrp[14] = new JButton("/");

btnGrp[15] = new JButton("=");

btnGrp[16] = new JButton("C");

for (int i = 0; i 17; i++) {

btnGrp[i].setFont(new Font("Dialog", Font.PLAIN, 18));

}

}

/*按网格顺序添加除“=”外16个按钮*/

public void addSouthJpn() {

int[] index={7,8,9,14,4,5,6,13,1,2,3,12,0,16,10,11};

for(int i=0;iindex.length;i++){

jpnSouth.add(btnGrp[index[i]]);

}

}

/*给按钮添加监听器*/

public void addListener() {

//给数字按钮添加监听器,btnGrp[10]是"."号

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

btnGrp[i].addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

String button = ( (JButton) e.getSource()).getText();

//如果有运算操作符或文本框数字为0并且按钮不为“。”

if (lastPress == "运算符" || lastPress == "等号"

|| txtDis.getText().equals("0") button != ".") {

txtDis.setText(""); //清空文本框

}

if (lastPress == "等号") {

operator = ""; //上次按的是=号,这次按数字,清空运算符

}

if (button == "." txtDis.getText().indexOf(".") != -1) {

} //这次按的是.文本框内已经包含.这种情况什么都不做,防止.重复

else {

txtDis.setText(txtDis.getText() + button); //文本框添加内容

}

lastPress = "数字";

}

});

}

//给运算操作符按钮添加监听器

for (int i = 11; i = 14; i++) {

btnGrp[i].addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if (operator != "" lastPress == "数字") { //运算符不为空并且之前按的是数字

(btnGrp[15].getActionListeners())[0].actionPerformed(e); //手动调用=号的监听响应实现=号功能

}

numSaved = Double.parseDouble(txtDis.getText()); //保存当前文本框的数字

operator = ( (JButton) e.getSource()).getText(); //保存运算操作符

lastPress = "运算符"; //添加运算符标记,下次文本框清空

}

});

}

//给等号按钮添加监听器

btnGrp[15].addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

double numNow = Double.parseDouble(txtDis.getText()); //当前文本框的数字

//运算符匹配操作

if (operator.equals("+")) {

txtDis.setText( (numSaved + numNow) + "");

}

else if (operator.equals("-")) {

if (lastPress == "等号") { //累记运算时的算法(一直按等号)

txtDis.setText( (numNow - numSaved) + "");

}

else {

txtDis.setText( (numSaved - numNow) + "");

}

}

else if (operator.equals("*")) {

txtDis.setText( (numSaved * numNow) + "");

}

else if (operator.equals("/")) {

if (lastPress == "等号") { //累记运算时的算法(一直按等号)

txtDis.setText( (numNow / numSaved) + "");

}

else {

txtDis.setText( (numSaved / numNow) + "");

}

}

if (lastPress != "等号") { //是第一次,以后按累记运算

numSaved = numNow; //保存数改为后一个数

}

lastPress = "等号"; //添加运算符标记,下次文本框清空

}

});

//给复位符“C”按钮添加监听器

btnGrp[16].addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

txtDis.setText("0");

numSaved = 0;

operator = "";

lastPress = "";

}

});

}

}

=====================第二个类=============================

import javax.swing.*;

public class Test {

public Test() {

CalculatorFrame calframe = new CalculatorFrame(); //新窗口

calframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭

calframe.setLocationRelativeTo(null); //窗口置中

calframe.setVisible(true); //显示窗口

calframe.setDefaultLookAndFeelDecorated(false); //使用windows视感

calframe.setResizable(false); //窗口不可调大小

}

public static void main(String[] args) {

Test test = new Test();

}

}

编写一个java GUI程序(其实帮我改改)

把frame=new subJFrame("DrawShapes");改成frame=new JFrame("DrawShapes");

程序基本没问题,在public void paint(Graphics g)中加上如下程序就可以了。

public void paint(Graphics g){

switch(i){

case 1: g.drawOval(20,20,40,40);break;

case 2: g.drawRect(20,20,40,40);break;

case 3: g.drawOval(20,30,40,50);break;

case 4: g.drawLine(20,20,40,40);break;

}

}

java中GUI的实现方式是???

其实无论在什么平台下,GUI应用程序的基本开发方法都是相似的。一般都包括下面这样四个步骤:

①创建容器

首先要创建一个GUI应用程序,需要创建一个用于容纳所有其它GUI组件元素的载体,Java中称为容器。典型的包括窗口(Window)、框架(Frame/JFrame)、对话框(Dialog/JDialog)、面板(Panel/JPanel)等。只有先创建了这些容器,其它界面元素如按钮(Button/JButton)、标签(Label/JLabel)、文本框(TextField/JTextField)等才有地方放。 ②添加组件

为了实现GUI应用程序的功能,为了与用户交换,需要在容器上添加各种组件/控件。这需要根据具体的功能要求来决定用什么组件。例如,如果需要提示信息,可用标签(Label/JLabel);如果需要输入少量文本,可用文本框(TextField/JTextField);如果需要输入较多文本,可用文本区域(TextArea/JTextArea);如果需要输入密码,可用密码域(JPasswordField)等等。

③安排组件

与传统的Windows环境下的GUI软件开发工具不同,为了更好地实现跨平台,Java程序中各组件的位置、大小一般不是以绝对量来衡量,而是以相对量来衡量。例如有时候,程序的组件的位置是按"东/East"、"西/West"、"南/South"、"北/North"、"中 /Center"这种方位来标识的。因此,在组织界面时,除了要考虑所需的组件种类外,还需要考虑如何安排这些组件的位置与大小。这一般是通过设置布局管理器(Layout Manager)及其相关属性来实现的。事实上上述按方位来安排组件就是采用了Java中多种布局管理器里的BorderLayout布局管理器。

④处理事件

为了完成一个GUI应用程序所应具备的功能,除了适当地安排各种组件产生美观的界面外,还需要处理各种界面元素事件,以便真正实现与用户的交换,完成程序的功能。在Java程序中这一般是通过实现适当的事件监听者接口来完成的。比如如果需要响应按钮事件,就需要实现 ActionListener监听者接口;如果需要响应窗口事件,就需要实现WindowListener监听者接口。

怎样用JAVA的GUI(图形用户界面)来设计一个程序!求程序和详解。

//正好以前注释过一个

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.image.MemoryImageSource;

import java.util.Random;

import javax.swing.JDialog;

import javax.swing.JPanel;

import javax.swing.Timer;

public class CharacterRain extends JDialog implements ActionListener {

    private static final long serialVersionUID = 1L;

    private Random random = new Random();

    private Dimension screenSize;

    private JPanel graphicsPanel;

    private final static int gap = 20;

    private int[] posArr;

    private int lines;

    private int columns;

    public static void main(String[] args) {

        new CharacterRain();

    }

    public CharacterRain() {

        initComponents();

    }

    private void initComponents() {

        setLayout(new BorderLayout());

        graphicsPanel = new GraphicsPanel();

        add(graphicsPanel, BorderLayout.CENTER);

        Toolkit defaultToolkit = Toolkit.getDefaultToolkit();

        Image image = defaultToolkit.createImage(new MemoryImageSource(0, 0,

                null, 0, 0));

        Cursor invisibleCursor = defaultToolkit.createCustomCursor(image,

                new Point(0, 0), "cursor");

        setCursor(invisibleCursor);

        KeyPressListener keyPressListener = new KeyPressListener();

        this.addKeyListener(keyPressListener);

        this.setAlwaysOnTop(true);

        this.setUndecorated(true);

        this.getGraphicsConfiguration().getDevice().setFullScreenWindow(this);

        this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

        setVisible(true);

        screenSize = Toolkit.getDefaultToolkit().getScreenSize();

        lines = screenSize.height / gap;       //用gap来分行

        columns = screenSize.width / gap;   //用gap来分列

        posArr = new int[columns + 1];  

        random = new Random();

        for (int i = 0; i  posArr.length; i++) {

            posArr[i] = random.nextInt(lines); //随机行数

        }

        new Timer(100, this).start();

    }

    private char getChr() {

        return (char)  (random.nextInt(94) + 33);   //返回随机字符

    }

    public void actionPerformed(ActionEvent e) {

        graphicsPanel. repaint();           // Timer事件,graphicsPanel重绘

    }

    @SuppressWarnings("serial")

    private class GraphicsPanel extends JPanel {

        public void paint(Graphics g) {

            Graphics2D g2d = (Graphics2D) g;

            g2d. setFont (getFont (). deriveFont (Font. BOLD));

            g2d. setColor(Color. BLACK);

            g2d. fillRect (0, 0, screenSize. width, screenSize. height);   // 设置背景色为黑色

            int currentColumn = 0;

            for (int x = 0; x  screenSize.width; x += gap) {

                int endPos = posArr[currentColumn];      //获得开始行位置

                g2d. setColor(Color. GREEN);

                g2d.drawString(String.valueOf(getChr()), x, endPos * gap);     //画出随机开始行的字符

                int cg = 0;                                                           //初始黑色

                int length = 25;                                                    //字符列的长度

                for (int j = endPos -length; j  endPos; j++) {           //随机行逐列向上length行,为循环开始行

                    cg += 255/(length + 1);                                                     //渐变色递增,0,255,0为green

                    if (cg  255) {

                        cg = 255;

                    }

                    g2d.setColor(new Color(0, cg, 0));

                    g2d.drawString(String.valueOf(getChr()), x, j * gap);    //画出随机行后的15行字符,颜色从黑色渐变成绿色,逐行增加

                }

                posArr[currentColumn] += random.nextInt(5);      //下落距离最快为4, 会产生加速下落的感觉

                if ((posArr[currentColumn] -5)* gap  getHeight()) {  //如果行数位置大于屏幕高度,从新获取合适的行

                    posArr[currentColumn] = random.nextInt(lines);

                }

                currentColumn++;    //下一列获取随机行

            }

        }

    }

    private class KeyPressListener extends KeyAdapter {

        public void keyPressed(KeyEvent e) {

            if (e.getKeyCode() ==KeyEvent.VK_ESCAPE) {   //监听键盘事件,按ESC按键退出

                System.exit(0);

            }

        }

    }

}

JAVA语言的GUI实例

GUI做的计算器,可以查考一下,组件、事件等

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Calculator extends JFrame{

private Container container;//框架

private JTextField tf;//定义文本框

private Panel panel;

private String cmd;

private double result;//运算结果

private boolean start;//运算开始判断

Calculator(){

super("计算器");

container = getContentPane();

container.setLayout(new BorderLayout());

//添加文本框

tf = new JTextField("0.0");

container.add(tf,BorderLayout.NORTH);

tf.setHorizontalAlignment(JTextField.RIGHT);

tf.setEditable(false);

//嵌套容器

panel = new Panel();

container.add(panel);

start = true;

result = 0;

//最后运算等号

cmd = "=";

ActionListener insert = new InsertAction();

ActionListener command = new CommandAction();

//调用创建Button方法

addButton("1",insert);

addButton("2",insert);

addButton("3",insert);

addButton("0",insert);

addButton("*",command);

addButton("Back",insert);

addButton("4",insert);

addButton("5",insert);

addButton("6",insert);

addButton("+",command);

addButton("/",command);

addButton("Clear",insert);

addButton("7",insert);

addButton("8",insert);

addButton("9",insert);

addButton("-",command);

addButton(".",insert);

addButton("=",command);

setSize(400,200);

}

private void addButton(String str,ActionListener listener){

//添加Button方法(操作类型、注册监听器)

JButton button=new JButton(str);

button.addActionListener(listener);

panel.setLayout(new GridLayout(3,6));

panel.add(button);

}

private class InsertAction implements ActionListener{

//插入,insert

public void actionPerformed(ActionEvent event){

String input=event.getActionCommand();

if (start)

{

tf.setText("");

start=false;

}

if(input.equals("Back"))

{

String str=tf.getText();

if(str.length()0)

tf.setText(str.substring(0,str.length()-1));

}

else if(input.equals("Clear"))

{

tf.setText("0");

start=true;

}

else

tf.setText(tf.getText()+input);

}

}

private class CommandAction implements ActionListener{

//计算,command

public void actionPerformed(ActionEvent e){

String command=e.getActionCommand();

if(start)

{

cmd=command;

}

else

{

calculate(Double.parseDouble(tf.getText()));

cmd=command;

start=true;

}

}

}

public void calculate(double x){

//加减乘除运算

if (cmd.equals("+")) result+=x;

else if (cmd.equals("-")) result-=x;

else if (cmd.equals("*")) result*=x;

else if (cmd.equals("/")) result/=x;

else if (cmd.equals("=")) result= x;

tf.setText(""+ result);

}

public static void main(String []args){

Calculator mycalculator=new Calculator();

mycalculator.setLocation(300,300);

mycalculator.setVisible(true);

}

}

如何用java的GUI编写一个记事本

很久之前写过的,凑合着看吧,

package 个人练习;

import java.awt.FileDialog;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.event.WindowListener;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.Writer;

import java.sql.Savepoint;

import javax.swing.JFrame;

/**

 * 创建一个类似记事本的程序

 * 该程序拥有自己的书写窗口

 * 可以自定义保存地址

 * @author Administrator

 *

 */

/*

 * 创建记事本类

 * 实现ActionListener接口

 * 重写它的actionPerformed方法

 * 

 */

public class JiShiBen implements ActionListener {

        //拥有自己的窗口

JFrame frame=new JFrame("记事本程序");

//菜单栏

MenuBar menubar=new MenuBar();

//创建下拉菜单

Menu wenjian=new Menu("文件");

//创建保存按钮

MenuItem dakai=new MenuItem("打开文件");

MenuItem baochun=new MenuItem("保存");

MenuItem xinjian=new MenuItem("新建");

//创建可以显示文本的多行区域

TextArea wenben=new TextArea();

//显示一个对话窗口,用户选择一个文件,如果模式是SAVE,则寻找一个地方去写入一个文件

FileDialog fd;

File file=null;

/*

 * 创建jishiben的构造函数

 */

public  JiShiBen(){

frame.setMenuBar(menubar);//将菜单栏关联到窗口

menubar.add(wenjian);//将下拉菜单添加到菜单栏

wenjian.add(xinjian);

wenjian.add(dakai);//将保存按钮添加到下拉菜单

wenjian.add(baochun);

dakai.addActionListener(this);//由baochuan按钮接受处理操作事件

baochun.addActionListener(this);

xinjian.addActionListener(this);

frame.add(wenben);//将文本区域添加到窗口

//设置窗口的属性

frame.setSize(600,480);

frame.setLocation(200, 200);

frame.setVisible(true);

/*

 * 

 * 用于接收窗口事件的侦听器接口。

 * 旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),

 * 要么扩展抽象类 WindowAdapter(仅重写所需的方法)。

 * 然后使用窗口的 addWindowListener 方法将从该类所创建

 * 的侦听器对象向该 Window 注册。

 * 当通过打开、关闭、激活或停用、

 * 图标化或取消图标化而改变了窗口状态时,

 * 将调用该侦听器对象中的相关方法,

 * 并将 WindowEvent 传递给该方法。 

 * windowClosing(WindowEvent e) 

        用户试图从窗口的系统菜单中关闭窗口时调用。

 *  

 */

frame.addWindowListener(new WindowAdapter() {

 public void windowClosing(WindowEvent e) {

 System.exit(0);//终止当前运行的java虚拟机

 }

});

}

/*

 * 实现ActionListener接口中的方法

 * (non-Javadoc)

 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)

 */

@Override

public void actionPerformed(ActionEvent e) {

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

//public Object getSource()最初发生 Event 的对象。 返回,最初发生 Event 的对象。

fd=new FileDialog(frame,"保存文本文件",FileDialog.SAVE);

/*

 * FileDialog(Dialog parent, String title, int mode) 

          创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。

          

    static int LOAD 

          此常量值指示文件对话框窗口的作用是查找要读取的文件。 

    static int SAVE 

          此常量值指示文件对话框窗口的作用是查找要写入的文件。 

 */

fd.setVisible(true);

//文件的存放位置是通过fd获取的位置,文件名是通过fd获取的文件名

file=new File(fd.getDirectory(), fd.getFile()+".txt");

save(file);

}

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

fd=new FileDialog(frame,"打开文件",FileDialog.LOAD);

fd.setVisible(true);

/*

 * String getFile() 

          获取此文件对话框的选定文件。 

   String getDirectory() 

          获取此文件对话框的目录。        

 */

file=new File(fd.getDirectory()+fd.getFile());

System.out.println(fd.getFile());

System.out.println(fd.getDirectory());

open(file);

}

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

wenben.setText("");

}

}

/*

 * 创建save方法

 */

public void save(File file){

try{

PrintWriter pw=new PrintWriter(file);

pw.write(wenben.getText());//wenben.getText()返回文本区域的文本

pw.close();

}catch(Exception e){

}

}

//创建open方法

public void open(File file){

try{

FileInputStream fis=new FileInputStream(file);

InputStreamReader isr=new InputStreamReader(fis);

BufferedReader br=new BufferedReader(isr);

    String line=null;

while((line=br.readLine())!=null){

wenben.append(line+"\n");

}

br.close();

}catch(Exception e){

}

}

public static void main(String[] args) {

new JiShiBen();

}

}

关于javagui实验和javaGUI实验报告分析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。