python图形界面教程_图形教程

python图形界面教程

众所周知,我们可以借助Java库制作游戏,这些库为我们提供制作游戏所需的图形。 因此,今天我将开始一个关于Java图形的非常新的部分。 我之前曾发表过有关如何制作所得税计算器的文章 。

首先要满足一些先决条件:

-您应该对Java语法有个不错的主意,因为我不会教它。
-您应该已经下载了Eclipse(任何人都可以执行,例如Indigo,Galileo,Ganymede等)
–您应该下载acm.jar文件,并将其作为外部jar文件包含到您的项目中。

注意 :如果可以下载Eclipse或从命令提示符执行。 如果从命令提示符执行,请不要忘记将acm.jar的路径输入到Environment Variable-> CLASSPATH ,否则将引发错误。

AWT(抽象窗口工具包)提供了可在Java小程序中使用的GUI组件,但是这里我们还将使用acm.jar库。

java.awt软件包和acm。* / acm.program。 *软件包包含GUI组件。

现在,我们应该描述将用于构建GUI的组件。

帆布

Canvas(在java.awt中)/ GCanvas(acm。*)是一个类,它在后台提供画布以在其上添加对象。 这是由“图形”程序自动创建的。

GCanvas的一些方法是:

add(object):将对象添加到画布上。

add(object,x,y) :将对象添加到指定的位置(x,y)。

add(object,position) :将对象添加到指定的位置(SOUTH,NORTH,EAST,WEST)。

remove(object) :删除该特定对象

removeAll() :从画布上删除所有对象。

setBackground(color) :设置画布的背景。

要了解有关GCanvas方法的更多信息, 请单击此处 。

要了解Canvas方法, 请单击此处 。

容器:

您可以使用add方法将GUI组件添加到容器中。

有两种类型的容器WindowPanel

视窗

窗口是一个独立于其他容器的容器。 窗口有两种类型:“ 框架”和“ 对话框”框架是带有标题和角的窗口,可以调整大小,而对话框是简单的窗口。 我们可以移动对话框,但不能调整其大小。

面板

面板必须包含在另一个容器或Web浏览器窗口中。 您必须将面板放入要显示的窗口中。

定位尺寸调整 组件

容器中组件的位置和大小是借助布局管理器确定的。 容器具有布局管理器的实例。 每当容器需要在其内部调整组件的大小或位置时,它都会调用布局管理器并进行必要的处理。

在布局管理器类中定义了不同的方法来实现重新定位和调整大小。

镜框

框架Window的子类。 FrameContainer类继承其属性,因此您可以使用add方法将组件添加到Frame中

Frame的默认布局是BorderLayout ,认为可以通过setLayout方法进行更改。

构造函数Frame (String)创建一个新的不可见Frame对象,其标题由String指定。

范例:

//Program using the acm library
import javax.swing.*;
import java.awt.*;
import acm.program.*;public class FrameExample extends GraphicsProgram{private JFrame f;public FrameExample(){f = new JFrame("Code 2 Learn");}public void launchMyFrame(){f.setSize(300,300);f.setBackground(Color.blue);f.setVisible(true);}public void init(){FrameExample fe=new FrameExample();fe.launchMyFrame();}
}
//Program using the w/o acm library
import java.awt.*;public class FrameExample{ private Frame f;public FrameExample(){f = new Frame("Code 2 Learn");}public void launchMyFrame(){f.setSize(300,300);f.setBackground(Color.blue);f.setVisible(true);}public static void main(String args[]){FrameExample fe=new FrameExample();fe.launchMyFrame();}
}

面板:

面板 (如Frame)为您提供了附加GUI组件的空间。 每个面板可以有自己的布局管理器。

创建面板后,我们必须将其添加到WindowFrame中 。 这可以使用add()方法来实现。

范例:

//Program using the acm library
import javax.swing.*;
import java.awt.Color;
import acm.program.*;public class FrameExample extends GraphicsProgram{private JFrame f;private JPanel p;public FrameExample(){f = new JFrame("Code 2 Learn");p=new JPanel();}public void launchMyFrame(){f.setSize(300,300);f.setLayout(null); //Override the default layout managerp.setSize(300, 50);p.setBackground(Color.BLACK);f.add(p);f.setVisible(true);}public static void main(String args[]){FrameExample fe=new FrameExample();fe.launchMyFrame();}
}
/Program using the w/o acm library
import javax.swing.*;
import java.awt.*;public class FrameNPanel{private Frame f;private Panel p;public FrameNPanel(){f = new Frame("Code 2 Learn");p=new Panel();}public void launchMyFrame(){f.setSize(300,300);f.setLayout(null); //Override the default layout managerp.setSize(300, 50);p.setBackground(Color.BLACK);f.add(p);f.setVisible(true);}public static void main(String args[]){FrameNPanel fe=new FrameNPanel();fe.launchMyFrame();}
}

我已经解释了可以放置物品的面板,框架和窗户。 但是我们在上一教程中没有设置窗口,面板或框架的布局,而是使用了默认布局。
现在,我们将了解可用于使用和操作GUI的布局上的不同类型。

容器布局:

容器中每个组件的布局均由布局管理器控制 。 每个容器(例如PanelFrames )都有一个与之关联的默认布局管理器,我们可以更改它。

布局管理器:

Java编程语言包含以下布局管理器:

  • FlowLayout – FlowLayout是PanelApplet的默认布局管理器。 当组件放置在具有布局管理器作为FlowLayout的容器中时,组件将彼此相邻放置以形成流(就像直线上的学生一样)
  • BorderLayoutBorderLayout是窗口, 对话框和框架的默认布局管理器。 应用BorderLayout时,将根据给出的选择使组件显示在边界上,即WEST,SOUTH,NORTH,CENTER或EAST。
  • GridLayout –此布局管理器提供了将组件放置在容器上的灵活性
  • CardLayout –它使用两个或多个共享同一显示的组件(如下所示)。
  • GridBagLayoutGridBagLayout是Java环境中最灵活,最复杂的布局管理器。 它放置的是组件以及行和列,因此允许我们执行行跨度或列跨度以便放置在组件上。

注意 :

默认情况下,所有Window类都使用BorderLayout管理器,而Panel类则使用FlowLayout管理器。 名为setLayout()的函数用于更改容器的布局(在示例中如下所示)。

一个简单的FlowLayout示例:

import java.awt.*;public class GUI2 {private Frame f;private Button but1;private Button but2;public GUI2(){f = new Frame("CODE 2 LEARN");but1 = new Button("Like Code 2 Learn");but2 = new Button("Don't Like Code 2 Learn");}public void generateGUI(){f.setLayout(new FlowLayout());f.add(but1);f.add(but2);f.pack();f.setVisible(true);}public static void main(String[] args) {GUI2 launchgui= new GUI2();launchgui.generateGUI();}
}

参考: Java Code Tutorial – 1和Java Graphics Tutorial -II,来自我们的JCG合作伙伴 Farhan Khwaja,位于Code 2 Learn博客上。


翻译自: https://www.javacodegeeks.com/2012/02/graphics-tutorial.html

python图形界面教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java创建树结构_Java学习之XML-017

如果想快速有效的学习,思想核心是“以建立知识体系为核心”,具体方法是“守破离”。反复练习直到熟练。————百战程序员1.0 XML1.1 XML 简介XML 指可扩展标记语言。XML 被设计用来传输和存储数据。1. 什么是XMLXML 指可扩展标记语言(EXten…

dll文件是什么

dll实际上是动态链接库的缩写,从windows1.0开始,动态链接库就是整个操作系统的基础,那么这有什么作用呢?在dos时代,程序员是通过编写程序来达到预期的目的的,每实现一个目的就需要编写一个程序,…

minecraft pythonapl_Substance PythonAPI入门案例

第一次在知乎发文,技术朋友们请多包涵。Substance Designer自去年夏天2018版推出Python API至今已有一年,从一开始的寒酸到现在的初成规模,官方的API库也随着版本的更新不断完善。目前网上(包括youtube)相关的教程甚少,即便是官方…

创建示例HTTPS服务器以获取乐趣和收益

通常,在开发人员或/和针对实际场景进行测试期间,我们(开发人员)面临着运行成熟的HTTPS服务器的需求,可能同时进行一些模拟。 在JVM平台上,除非您知道适合此工作的正确工具,否则它过去并不是一件…

WebDriver API元素的定位

一、以下截图为用FireBug定位的用火狐(Firefox)浏览器打开的百度首页,下面所讲述的八种定位方法,就是以该截图中的百度输入框为例子。 ①、FireBug是Firefox浏览器下的开发类插件,通过该插件可以查看HTML、CSS、Javascript控制台、网络状况监…

mysql字符乱码百度_如何解决MySQL字符集乱码问题

变量 a 的字符编码是由参数 CHARACTER_SET_CLIENT 决定的,假设此时编码为 A,也就是变量 a 的编码。2. 写入语句在发送到 MySQL 服务端之前的编码由 CHARACTER_SET_CONNECTION 决定,假设此时编码为 B。3. 经过 MySQL 一系列词法,语…

[水煮 ASP.NET Web API2 方法论](1-6)Model Validation

问题 想要 ASP.NET Web API 执行模型验证,同时可以和 ASP.NET MVC 共享一些验证逻辑。 解决方案 ASP.NET Web API 与 ASP.NET MVC 支持一样的验证机制,都是通过System.ComponentModel.DataAnnoataions 的属性验证。使用框架提供的相关验证属性&#xff0…

findbugs-dea_FindBugs和JSR-305

findbugs-dea假设该组开发人员在大型项目的各个部分上并行工作-一些开发人员在进行服务实现,而其他开发人员在使用该服务的代码。 考虑到API的假设,两个小组都同意服务API,并开始单独工作。 您认为这个故事会有幸福的结局吗? 好吧…

课程2 谈论音乐行业的趋势

1. 音乐词汇 CDdownloadLPsrecordsvinyl 黑胶sounddlbum covers 专辑封面2. 使用类似单词谈论各种录制你和聆听音乐的不同媒体 I still prefer the sound of my old LP records.My father used to by a lot of CDs.Most of my music these days is MP3s.3. 你可以使用这些词来谈…

带有ActiveMQ和Maven的JMS Sender应用程序

我们已经看到了如何使用ActiveMQ和Maven创建JMS Receiver应用程序 。 让我们看看我们如何类似地创建JMS Sender应用程序 。 web.xml与创建接收器应用程序时使用的相同&#xff1a; <web-app xmlns"http://java.sun.com/xml/ns/javaee"xmlns:xsi"http://www…

mysql自连接查询的sql语句_mysql 自连接

SELECT语句中的自连接。到目前为止&#xff0c;我们连接的都是两张不同的表&#xff0c;那么能不能对一张表进行自我连接呢&#xff1f;答案是肯定的。有没有必要对一张表进行自我连接呢&#xff1f;答案也是肯定的。表的别名&#xff1a;一张表可以自我连接。进行自连接时我们…

Spring的Lifecycle

Lifecycle接口定义了每个对象的重要方法&#xff0c;每个对象都有自己的生命周期需求&#xff0c;如下&#xff1a; public interface Lifecycle { void start(); void stop(); boolean isRunning(); } 任何spring管理的对象都可以实现这个接口。那么&#xff0c;当Appl…

mysql aes密钥大于16位_aes秘钥限制问题解决办法

在oarcle jdk1.8上执行256位的aes秘钥加密报错如下:java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key sizeat com.xx.opal.core.utils.aes.AESTool.encryptWithoutEncode(AESTool.java:33)at com.xx.opal.aes.AESTest.test(AESTest.java:19)at sun…

background-clip与background-origin

规定背景的绘制区域 浏览器支持 IE9、Firefox、Opera、Chrome 以及 Safari 支持 background-clip 属性。 注释&#xff1a;Internet Explorer 8 以及更早的版本不支持 background-clip 属性。IE9、Firefox、Opera、Chrome 以及 Safari 支持 background-clip 属性。 有三个值&am…

策略模式应用场景和uml_策略模式

策略模式应用场景和uml在最近的博客中&#xff0c;我收到了Wojciech Soczy&#xff1f;ski的评论&#xff0c;内容涉及在使用“不要问”&#xff08;TDA&#xff09;时如何使用“战略”模式实施单一责任原则&#xff08;SRP&#xff09;。 在某些时候&#xff0c;我打算进一步讨…

mysql建表时主键_mysql建表时怎么设置主键?

设置方法&#xff1a;在“CREATE TABLE”语句中&#xff0c;通过“PRIMARY KEY”关键字来指定主键&#xff0c;语法格式“字段名 数据类型 PRIMARY KEY [默认值]”或“[CONSTRAINT 约束名] PRIMARY KEY 字段名”。主键(PRIMARY KEY)的完整称呼是“主键约束”&#xff0c;是 MyS…

mysql的考试范围_数据库考试范围整理

填空&#xff1a;1.目前常用的数据库管理系统软件有Access 、SQL Sever和Oracle.2.数据实际上就是存储在某一种媒体上的能够被识别的物理符号。3.一个关系的逻辑结构就是一个二维表。4.对关系进行选择、投影或连接运算之后&#xff0c;运算的结果仍然是一个关系。5.在关系数据库…

Java EE 8 MVC:控制器的详细介绍

Java EE MVC是为Java EE 8规划并在JSR-371中指定的基于动作的新MVC框架。 这是我的Java EE 8 MVC教程的第二篇文章。 第一篇文章介绍了基础知识&#xff0c;并展示了如何开始使用 Java EE 8 MVC参考实现Ozark 。 在本文中&#xff0c;我们将更详细地介绍MVC控制器。 MVC控制器…

mysql htmlspecialchars_htmlSpecialchars和MySQL_REARY_EXECH_String是否保证PHP代码

当涉及到数据库查询时&#xff0c;始终尝试并使用准备好的参数化查询。这个mysqli和PDO图书馆支持这一点。这比使用转义函数(如mysql_real_escape_string.是,mysql_real_escape_string实际上只是一个字符串转义函数。这不是一颗神奇的子弹。它所要做的就是转义危险字符&#xf…

前端跨域问题的几种解决方案

前端跨域问题 一&#xff1a;同源策略   1.whats this     所谓同源是指&#xff0c;域名&#xff0c;协议&#xff0c;端口相同。当浏览器运行一个JS脚本时会进行同源检测&#xff0c;如果不同源是不能执行的。   2.源继承     来自about:blank&#xff0c;javasc…