「javagui实验」javaGUI实验报告分析
今天给各位分享javagui实验的知识,其中也会对javaGUI实验报告分析进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、GUI程序设计(java)
- 2、编写一个java GUI程序(其实帮我改改)
- 3、java中GUI的实现方式是???
- 4、怎样用JAVA的GUI(图形用户界面)来设计一个程序!求程序和详解。
- 5、JAVA语言的GUI实例
- 6、如何用java的GUI编写一个记事本
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实验报告分析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。