java+p+=+new+JPanel(new+GridLayout(5,3,0,15));啥意?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java+p+=+new+JPanel(new+GridLayout(5,3,0,15));啥意?相关的知识,希望对你有一定的参考价值。
JPanel和GridLayout是Java GUI编程常用的类。
new JPanel() 的意思是创建一个面板,用来容纳文本和按钮等组件。
new GridLayout(5,3,0,15) 的意思是使用网格式布局,四个参数分别:
第一个参数用来指定行数;
第二个参数用来指定列数;
第三个参数用来指定水平方向组件间的距离;
第四个参数用来指定垂直方向组件间的距离;
具体来说,GridLayout(5, 3, 0, 15)中的参数含义如下:
- 5:表示布局的行数。
- 3:表示布局的列数。
- 0:表示组件之间的水平间距。
- 15:表示组件之间的垂直间距。
在这个JPanel面板对象上可以添加其他的Swing组件,比如按钮、文本框等。由于采用了网格布局,这些组件将会按照指定的行列数和间距排列在面板上。
最后一个暑假java web
1.swing美化包下载好的jar拖拽到项目下,右键构建路径,,,,选定美化包的class复制限定名,在mian方法后面new的loginframe前面try的后面粘贴美化包去掉后缀双引号括起来再百度UIManager(UIManager.setLookAndFeel("......."))
2.背景图在new的jpanel后编写 ,所以不能直接new本身jpanel要new一个主类(2017.7.6 30分40秒) sas覆盖paintComponent()。然后把新建的MyBgJpanel类代替前面new的JPanel 。
背景图片要放在对应的包下面。
button添加图片也是拖到包下,然后icon classpath。
3.textField.getText().trim();事件监听;
char型数组要变为String直接括起来然后在前面new String;
JOptionPane.showMessageDialog(parentComponent, message);弹出框,第一个是容器中相对位置,null是在中间。 当你需要调用的变量在后面则需要全局变量,main方法下调用。
正则表达式验证:^[a-zA-z][a-zA-Z0-9_]{2,9}$用户名由 3-10位的字母下划线和数字组成。不能以数字或下划线开头。只能已字母开头。允许全部是字母。
matches()方法验证是否符合正则表达式,if语句括号前面加!表示非
4.Jradiobutton男女共组互斥,model自建选择项
DBUtil连接数据库的工具类,静态方法加载驱动,Class.forName("com.mysql.jdbc.Driver");
数据库连接有三个数据:url地址,用户名,密码; 三个数据都要写自己的,导Connection包要导sql的
连接不能返回空。
5.vo类一定要implements Serializable
Connection conn=DBUtil.getConnection();获取connction
try {
//1.获取Connection
conn = DBUtil.getConnection();
//2.根据Connection创建语句对象
st = conn.createStatement();
//3.语句执行sql语句
String sql = "select * from dept";
rs = st.executeQuery(sql);
//4.按行遍历结果集,每行都封装到一个Dept对象中
while(rs.next()){
Dept dept = new Dept();
dept.setDeptno(rs.getInt("deptno"));
dept.setDeptname(rs.getString("deptname"));
dept.setDeptloc(rs.getString("deptloc"));
list.add(dept);
}
} catch (Exception e) {
// TO DO 自动生成的 catch 块
throw e;
}finally{
//5.释放资源
DBUtil.close(conn,st,rs);
}
return list;
6.if(e.getButton()==3){//右键删除
7.dao层子包下都是实现类。
8.Box box=new Box();第一个Box是数据类型,第二个是变量名,Box()是类创建的对应对象。
9.String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
那么:
s1==s2 是 false //两个变量的内存地址不一样,也就是说它们指向的对象不 一样,
故不相等。
s1.equals(s2) 是 true //两个变量的所包含的内容是abc,故相等。
return -1;意思是返回错误码。方法中不能插入数据。主函数调用方法插入数据。
最小化或还原所有窗口 Windows + D;如果只要当前窗口最小化,先按Alt+空格,然后按N;
private私有的只有当前类可以访问。getxxx()表示得到属性,setxxx()表示对属性进行测试。
css排版js动态效果jquery是js的框架,再加上html 网站页面。
html超文本标记(标签)语言
浏览器兼容问题:浏览器解析方式不一样;
html编写软件:sublime,emmet插件
../代表上一级路径;
form表单
form里面的action表示将表单提交给谁。带#表示提交给自己。
method表示提交方式:get post。
colspan表示可以横跨的列数
框架集frameset
rows cols
px像素 此src网页,*代表网页其他位置高度,乱码的原因可能是名称空格了
css2和h4搭配class类,id是强调唯一性
组合#,id也要用#
内嵌标优先限度最高
link标签link:css
margin外边距
<div class="div7"><div class="lanmu4" style="">栏目名称</div>
垂直居中:line-height: 35px;把行高即文字区域设成和ul一样高
text-decoration下划线list-style: none;点点
:hover{}触碰变色 solid实线
position:relative;left:-40%;实现居中的li向左边浮动。
background-repeat:repeat no-repeat repeat-x repeat-y background-image:url(图片地址) ;如果图片小很多个填满,repeat设置只填一个。
background-position:定位,比如定位到整张背景图的购物车小图标。
line-height只对文字起作用,对图片无效,所以如果仅用line-height是无法实现你的目的的,肯定要用到其他,比如给img添加margin-top:20px,或者vertical-align:-50%
padding-top:26px;设置form文本框的距离高度,类似margin-top;
dl标签 dt图片 dd文字
position默认static正常的布局absolute绝对定位
ul{
position: absolute;
bottom: 10px;
right: 10px;
}
relative相对定位可以屏幕左上方也可以父容器为参考点默认00 标签写在父容器,在子容器写px位置fixed类似绝对布局,常用于广告
{
position:fixed;
top:15px;
right:2px;}
<h1 onclick="this.innerHTML=‘谢谢!‘">请点击该文本</h1> 点击变成谢谢
onblur 事件会在对象失去焦点时发生
onsubmit 事件会在表单中的确认按钮被点击时发生。
var username_str = document.getElementById("username").value;获取用户名
//对字符串进行非空和正则表达式的验证
if(username_str==null || ""==username_str){//后者是字符串为空。
<div class="login">
<fieldset>
<legend>登录MEITAO.COM</legend>
<td align="right">邮箱:</td>表单右对齐
onload 事件会在页面或图像加载完成后立即发生
setTimeout()
未来的某时执行代码
clearTimeout()
取消setTimeout()
<script>
count = 3;
window.onload = countPage;
function countPage(){
//每隔一秒 count--,同时将count的值给span
count--;
var span = document.getElementById("count");
span.innerText = count;
var t= setTimeout("countPage()",1000);
//当count==0时,应该退出setTimeout
if(count==0){
clearTimeout(t);
//跳转到主界面
location.href = "8.html";
}
}
</script>
</head>
<body>
登陆成功,稍后计时<span id="count">3</span>秒后进入主页
</body>
</html>
显示一个钟表
<html>
<head>
<script type="text/javascript">
function startTime()
{
var today=new Date()
var h=today.getHours()
var m=today.getMinutes()
var s=today.getSeconds()
// add a zero in front of numbers<10
m=checkTime(m)
s=checkTime(s)
document.getElementById(‘txt‘).innerHTML=h+":"+m+":"+s
t=setTimeout(‘startTime()‘,500) 因为程序运行要占用所以是500?
}
function checkTime(i)
{
if (i<10)
{i="0" + i}
return i
}
</script>
</head>
<body onload="startTime()">
<div id="txt"></div>
</body>
</html>
alt 如果图像不能显示,则用alt中的文本代替显示
要打script先打<这样可以快捷输入。
lacation.href="网站地址"
DOM 对象 (document object model)文档对象模型
document方法 getElementById()返回对拥有指定 id 的第一个对象的引用。 getElementsByName()返回带有指定名称的对象集合。 getElementsByTagName()返回带有指定标签名的对象集合。write() writeln()
HTMLElement--Node --Element
DOM树 根节点-- 节点类型:元素节点nodeType=1(根元素节点)、文本节点3、属性节点2、注释节点8
node节点 常用属性:nodeName nodeValue nodeType parentNode firstChild lastChild childNodes attibutes
常用方法:创建xx createElement createTextNode createAttribute
添加xx appendChild insertBefore setAttributeNode() setAttribute("属性名","属性值")
删除xx removeChild() removeAttribute("属性名");
document对象 表单对象 style对象 表格对象
如:document.body
document.form的名字.表单元素的名字
小结:form的名字.elements["表单元素的名字"]
elements集合 包含表单中所有元素的数组。
window.onload是一个事件,当文档加载完成之后就会触发该事件
value 属性规定在表单被提交时被发送到服务器的值。
<option> 与 <option/> 之间的值是浏览器显示在下拉列表中的内容,而 value 属性中的值是表单被提交时被发送到服务器的值。
注释:如果没有指定 value 属性,选项的值将设置为 <option> 标签中的内容。
select add()方法 向下拉列表添加一个选项。
ava Naming and Directory Interface (JNDI)
JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源,如DNS和LDAP、本地文件系统,后者在应用服务器中的对象。
JSP(Java Server Pages) java服务器页面
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
Java Servlet
Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。
软件架构的模式
C/S模式 client/server
socket+流 通过TCP/IP协议进行通信
android 或 ios APP 通过HTTP协议进行通信 (现在的主流 html5)
B/S模式 broswer/server b浏览器
输入http://域名(服务器主机的ip):端口号(80)/网页资源
比较 C/S B/S 优劣势
C/S 先必须安装一个客户端、软件更新比较麻烦、访问速度较慢
B/S 需要一个浏览器,服务器压力大,最大的问题是安全性问题
tomcat web应用服务器
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
Tcp ip协议
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。
我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在
http功用
浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。
http协议:
超文本传输协议 ,www(底层也是Tcp)
发展历史 1.0 --传输静态网页 html
1.1--可以请求动态技术的网页 jsp php asp.net/asp(掌握http://主流)
2.0--https://,s表示security安全
状态码status code 200表示响应成功 4xx 404表示资源没有找到 5XX 服务器处理时代码运行异常 500
Myeclipce jsp要在网页上运行,放在workplace不行的,要放tomcat webapps目录下,这个过程叫部署和发布
不能ctrl cv 首先选定项目,点击图示
进去后点击add添加服务器,里面有个myeclipcetomcat是myeclipce自带的tomat。 me_tcat
就是myeclipce下的tomcat。
成功部署
这样查看部署文件的位置
部署后要启动
右键服务第一个选项进去修改端口
Web—inf服务器端的核心文件夹
.web应用程序结构
META-INF--context.xml 数据库连接池的配置文件
WEB-INF---lib文件夹:当前项目所需要的jar包 classes
web.xml:web描述符文件 欢迎页 统一异常页error-page servlet
注意:放在web-inf下的资源,浏览器直接请求访问不到,但是可以通过服务器内部转发
Web项目的jar包都放在lib中
Supperclass是父类标准
接口标准,下面的是方法覆盖不勾选
做一个映射,因为servlet不同于一般的java,它可以通过浏览器访问的。所以需要对外提供一个访问地址(第三行那个url 随便写个)
Servlet java类实现servlet标准接口
覆盖的方法init表示初始化 destroy表示正在销毁servlet,因为此类产生对象用完了需要销毁 service方法是请求访问该servlet时,需要响应的内容就在这里。
重部署 ,就是刷一下服务器,刚刚写的就刷出来了
刷一次网页就会回调一次service方法但是init只会调用一次
http://localhost:8080/calDemo1/Demo1
加一个构造方法,和init一样只会启动一次
关闭服务器,destroy就会启动
这是servlet的一整个生命周期
servlet:指定一个url地址进行访问一个java类
不需要提交数据就不需要给name select标签下拉框 action应该提交给控制层
这里可以看url地址 servlet和servlet-mapping(映射)name要一样
把/calServlet复制到cal的action中/要省掉,因为基本路径已经有了
Vo:java的一个vo对象
Web项目改名:右键项目,最下面,输入web
进化MVC
视图层(view)、控制层(control) 业务逻辑层 数据访问层 数据层(Model)
www.pconline.com.cn太平洋电脑网,一般都是用来下载软件的。
购物车可以放section?里面而就不必做表放数据库里面。
Ctrl加鼠标左键选取文件夹
通过服务器业务层(servlet)获取连接对象的实例然后释放返回业务层再给客服端,如果请求过多效率就会很低,所以需要连接池
在连接池中一次new很多个连接对象出来,来一个请求就找一个空闲的。忙碌的做完之后变为空闲但不会被销毁,等待下一个请求。没有连接池的话会被销毁。
连接池都是大家用java写的jar包,主流有.第三方DBCP连接池
第三方C3P0连接池还有阿里巴巴druid。
在tomcat中查看端口:打开conf中server.xml。
DataSource数据源 configurations配置 context上下文
DBUtil中tomcat连接池千万不能使用main方法或者junit方法去测试这个getConnection()因为main方法启动的是java虚拟机,和tomcat没有关系,根本拿不到连接池。
窗口最下面那个so tomcat配置自己装的。
.impl实现类
select @@basedir as basePath from dual查询mysql路径
DButil工具类中连接数据库的url地址还有用户名密码应该放在属性文件当中,因为他们有可能改动,Java项目在项目名下面新建,web项目在src或者web-inf
,因为放在src下文件会被保存在web-inf的classes文件下。
下面新建
Java项目是这样直接new FileInputStream
Web项目在类路径下加载InputStream inStream = DBUtil2.class.getClassLoader().getResourceAsStream("db.properties");
Mvc的c:servlet,进行业务逻辑处理,对数据库进行操作
注释 <!--客户端注释,浏览器源码可见 --> <%-- 服务器端注释,浏览器源码不可见--%>
taglib--标签库jstl
核心标签库 c
<%@ taglib %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
采用c:forEach循环遍历request值域中的集合
<c:forEach var="obj2" items="${list}">
${obj2}<br/>
</c:forEach>
web服务器收到客户端的HTTP请求,会针对每一次请求分别创建一个用于代表请求的request对象和代表响应的response对象。
1.要得到客户机提交过来的数据,只需要找request对象就行了。
2、要向客户机输出数据,只需要找response对象就行了。
通讯录:
Mvc 浏览器发出url请求再经过控制层servlet的一系列请求跳转到视图层(jsp)(跳转方式有两种,常用是高效率的服务器内部转发)
项目第一步 需求分析和概要设计(创建数据库)
<jsp:forward page="findAllServlet"></jsp:forward> page中的是url地址,jsp跳转也可以用location
<script>
window.onload = function(){
//location.href="findAllServlet";
location.href="findAllServlet";
};
</script>
接口父类没有那么子类就应该有
Port端口forword跳转
源码一模一样可以调用,比如doPost方法下面源码和doGet方法一样,可以在doPast方法下面写上 doGet(request,response);
<div align="center"><img src="2008081801331242.gif"/></div>
Web项目图片要放webroot的images下面
!--是html注释也就是客户端注释,%--是jsp注释也就是服务器端注释,客户端看不到服务器端注释
控制层要做的四件事情:1.获取请求参数 2.对参数进行验证 3.调用业务层 4.根据业务层返回值进行跳转。
服务层为什么要写接口类? 为了方便扩展和重用
接口提供了一个公用的方法提供方。 接口是用来规定子类的行为的。
举个例子吧 , 比如有个需求, 需要保存客户信息, 有些客户从网站来, 有些从手机客户端来, 有些从后台管理系统录入, 假设不同来源的客户有不同的处理业务流程, 这个时候我定义接口来提供一个保存客户的方法, 然后不同平台实现我这个保存客户的接口, 以后保存客户的话, 我只用知道这个接口就可以了, 具体调用哪个方法 去实例化具体你需要用的类,这也就是JAVA的多态的体现。 而如果你不用接口的话 , 首先我需要哪个方法 我就去实例化哪个类, 冗余很高, 其次扩展很差。 接口就是一个规范, 其子类都会有他提供的方法。 统一管理。
在java中不允许一个类继承多个多个父类,但是要实现“一个类继承多个类的功能”就可以用接口,一个类实现多个多个接口从而间接实现多重继承。
服务层中的list<>(public加返回值list加findAll()里面没有参数,然后抛出异常)里面的是封装类,封装对象写在vo中,封装对象都要实现序列化接口
在业务层调用dao层实现查询所有,dao需要数据库连接类获取对象和实例,这往往写成一个util工具类。
测试数据库连接类是否成功主函数调用下静态方法就可以了。
初级的时候获取到数据库的连接对象,然后由连接对象(Connection)得语句对象(Statement)然后得到一个结果集(ResultSet),写完后还要释放资源。中级就引入一个封装了jdbc的工具jar包(commons-dbutils-1.7.jar common一般都是阿帕奇公司出品),这个jar包的核心类是QueryRunner。Constructors构造方法,有参数就是有参构造,没有就是无参构造,
先用无参的new出来
以上是关于java+p+=+new+JPanel(new+GridLayout(5,3,0,15));啥意?的主要内容,如果未能解决你的问题,请参考以下文章
CF1106F Lunar New Year and a Recursive Sequence(矩阵快速幂+bsgs+exgcd)