需求:用实线把各个面板圈起来,然后把面板的名字写在圈圈的左上角。
原始画面:
由于原来的程序使用的是AWT中的Panel,而这个控件我们没有设置titleBorder的方法。
现在将更新为Swing中的JPanel面板,代码分别为:
旧代码:
Panel pRoboCtrl=new Panel();
pRoboCtrl.setLayout(new GridLayout(5, 1, 2, 5));
// Robot控制面板的第一排,面板的标题
Panel pR1=new Panel();
pR1.setLayout(new GridLayout(1, 1, 2, 3));
//Row One
pR1.add(new Label("Robot Control",Label.CENTER));
新代码:
JPanel pRoboCtrl=new JPanel();
pRoboCtrl.setLayout(new GridLayout(4, 1, 2, 5));
Border titleBorder1=BorderFactory.createTitledBorder("Robot Control");
pRoboCtrl.setBorder(titleBorder1);
原来的处理方式是将一个Label放到Panel中,然后将这个Panel放到外层的Panel中,新方式是将外层Panel定义成JPanel,然后设置Border的值为BorderFactory产生的一个实例。
解决这个问题后,新问题又来了,两个JPanel中的内容不一样,上面多,下面少,但是现在面板却是一样大,要改成面板高度自动适应。
其实这只需要修改一行代码就可以了,代码如下:
旧代码:
CP.setLayout(new GridLayout(3, 1, 2, 5));
新代码:
CP.setLayout(new BoxLayout(CP, BoxLayout.Y_AXIS)); // 沿垂直方向布置组件
旧代码的处理方式是网格布局,新代码的方式是用BoxLayout布局管理器,它会按要求垂直或水平分布。

以下代码创建了一个JPanel容器,它采用垂直 BoxLayout,在这个容器中包含两个Button,这两个Button沿垂直方向分布,并且保持像素为 5 的固定垂直间隔。
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));// 沿垂直方向布置组件
panel.add(new JButton("Button1"));
panel.add(Box.createVerticalStrut(5));
panel.add(new JButton("Button2"));
源代码:
下载
posted @
2008-04-29 16:16 CoderDream 阅读(64) |
评论 (0) |
编辑 收藏
数据库和表
create table USERS
(
USERNAME VARCHAR2(20) not null,
PASSWORD VARCHAR2(20)
)
alter table USERS
add constraint U_PK primary key (USERNAME)
/**
* JdbcExample.java
*
* Provider: CoderDream's Studio
*
* History
* Date(DD/MM/YYYY) Author Description
* ----------------------------------------------------------------------------
* Apr 14, 2008 CoderDream Created
*/
package com.coderdream.jdbc.oracle;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author XL
*
*/
public class JdbcExample {
private static Connection getConn() {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@10.5.15.117:1521:csi";
String username = "scott";
String password = "tiger";
Connection conn = null;
try {
Class.forName(driver);
// new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection(url, username, password);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
private static int insert(String username, String password) {
Connection conn = getConn();
int i = 0;
String sql = "insert into users (username,password) values(?,?)";
PreparedStatement pstmt;
try {
pstmt = conn.prepareStatement(sql);
// Statement stat = conn.createStatement();
pstmt.setString(1, username);
pstmt.setString(2, password);
i = pstmt.executeUpdate();
System.out.println("resutl: " + i);
pstmt.close();
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
return i;
}
private static void query() {
Connection conn = getConn();
String sql = "select * from users";
PreparedStatement pstmt;
try {
pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println("name: " + rs.getString("username")
+ " \tpassword: " + rs.getString("password"));
}
rs.close();
pstmt.close();
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
private static int update(String oldName, String newPass) {
Connection conn = getConn();
int i = 0;
String sql = "update users set password='" + newPass
+ "' where username='" + oldName + "'";
PreparedStatement pstmt;
try {
pstmt = conn.prepareStatement(sql);
i = pstmt.executeUpdate();
System.out.println("resutl: " + i);
pstmt.close();
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
return i;
}
private static int delete(String username) {
Connection conn = getConn();
int i = 0;
String sql = "delete users where username='" + username + "'";
PreparedStatement pstmt;
try {
pstmt = conn.prepareStatement(sql);
i = pstmt.executeUpdate();
System.out.println("resutl: " + i);
pstmt.close();
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
return i;
}
/**
* @param args
*/
public static void main(String[] args) {
insert("CDE", "123");
insert("CoderDream", "456");
query();
update("CoderDream", "456");
query();
delete("CoderDream");
query();
}
}
posted @
2008-04-14 17:55 CoderDream 阅读(98) |
评论 (0) |
编辑 收藏
1、首先下载eclipse的Tomcat插件,文件名为:tomcatPluginV321.zip
下载:
地址
2、安装Tomcat插件,即将zip档解压,放入eclipse目录下的 plugins 文件夹中。
3、在项目上点右键,设置properties,在'Tomcat'下面设置'export to war settings'输入要导出的war文件路径和文件名,确定,返回项目。
4、在项目上点右键,选择tomcat project->Export to the war file sets in project properties
5、 进入C盘,可以看到csi.war文件正在生成,成功后会有提示框。这样就可以通过Tomcat插件导出WAR档了。
posted @
2008-04-08 13:43 CoderDream 阅读(135) |
评论 (1) |
编辑 收藏
有关CVS权限设置参考
个人建议:如果各个项目独立,我还是建议每个项目一个库!
你的整体思路是正确的,步骤很清晰。
不过要注意cvs chacl -R default:n 的使用,此命令会把该模块的全部权限都去掉的。
另外建议 如果admini,pm 是管理员用户,可以在CVSROOT下建立超级用户admin文件,将这两个用户加入。
=====================================================================
那就按找你的思想设计权限
假设目录结构如下
project
|
|……pro1
| |_pro
| |_aa
|
|……Pro2
| |_pro
| |_bb
|
|_CVSROOT
权限要求
1.用户admini,pm 对project 整个目录有rcw的权限
2.用户h,y,w 对pro1\pro 整个目录有rcw的权限
3.用户y 对pro1\aa 整个目录有rcw的权限
4.用户h 对pro2 整个目录有rcw的权限
=====================================================================
权限设置步骤如下:
首先,建立一个组包含3个用户h,y,w。 group1:h,y,w
一.用户admini,pm 对project 目录有rcw的权限
选中模块roject设置权限:
cvs chacl -R default:n
cvs chacl -R admini:rcw
cvs chacl -R pm:rcw
cvs lsacl
二.用户h,y,w 对pro1\pro目录有rcw的权限
选中模块pro设置权限:
cvs chacl -R group1:rcw
cvs lsacl
三.用户y 对pro1\aa目录有rcw的权限
选中模块aa设置权限:
cvs chacl -R y:rcw
cvs lsacl
四.用户h 对pro2目录有rcw的权限
选中模块pro2:
cvs chacl -R h:rcw
cvs lsacl
结束!
C应该是check out/in
R:READ-只读权限;用户不能对文件进行修改操作;
A:ADD/RENAME/DELETE-用户可以对文件进行添加、删除和更名的操作;其中删除的操作支持从视图中删除文件连接,并没有彻底删除文件,配置库中依然保存文件及其日志信息;
C:CHECK IN/CHECK OUT-文件修改权限:用户可以将文件进行签出进行修改,并可以将修改后的文件签入到配置库中;
D:DESTROY-彻底删除权限;
1、
VSS和CVS的比较
2、
CVS使用手册
3、
一篇CVS权限管理手册
4、
CVS资料集中营
5、
CVS权限设置
posted @
2008-04-07 16:32 CoderDream 阅读(92) |
评论 (0) |
编辑 收藏
摘要: Struts连接数据库一般有直接JDBC和数据源两种方式,
1、JDBC:
在MySQL中创建数据库:
drop database if exists login;
create database login;
use login;
create table user(...
阅读全文
posted @
2008-03-26 13:47 CoderDream 阅读(937) |
评论 (3) |
编辑 收藏
4.1 Web应用的发布描述文件
包含以下信息:
- 初始化参数
- Session配置
- Servlet声明
- Servlet映射
- 应用生命周期的监听类
- 过滤器定义和映射
- MIME类型映射
- 欢迎文件列表
- 出错处理页面
- 标签库映射
- JNDI引用
4.1.1 Web应用发布描述文件的文档类型定义(DTD)
包含元素,属性,实体
<web-app>元素是web.xml的根元素,其他元素必须嵌入在<web-app>元素以内。
<servlet>必须在<servlet-mapping>之前;
<servlet-mapping>必须在<taglib>之前;
4.2 为Struts 应用配置 web.xml 文件
4.2.1 配置 Struts 的 ActionServlet
<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/conf/struts-config.xml
</param-value>
</init-param>
<init-param>
<param-name>config/bank</param-name>
<param-value>
/WEB-INF/conf/struts-config-bank.xml
</param-value>
</init-param>
<init-param>
<param-name>config/card</param-name>
<param-value>
/WEB-INF/conf/struts-config-card.xml
</param-value>
</init-param>
<init-param>
<param-name>config/publicarea</param-name>
<param-value>
/WEB-INF/conf/struts-config-publicarea.xml
</param-value>
</init-param>
<init-param>
<param-name>config/maintenance</param-name>
<param-value>
/WEB-INF/conf/struts-config-maintenance.xml
</param-value>
</init-param>
<init-param>
<param-name>config/report</param-name>
<param-value>
/WEB-INF/conf/struts-config-report.xml
</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
说明:
1、一个项目可以配置多个<servlet>,且其中一个名为action;
2、在action的<servlet>中,可配置多个config,第一个为config,其他以“config/”开头,如:config/bank;
3、在全局<forward>元素中的例子:
<global-forwards>
<forward name="toBank" path="/bank/login.do" />
</global-forwards>
4、使用<action>元素中的局部<forward>元素,例如:
<action-mappings>

<action>
<forward> name="success" path="/bank/index.do" />
</action>
</action-mappings>
5、<url-pattern>属性为“*.do”,表明ActionServlet负责处理所有以“.do”扩展名结尾的URL。
4.2.2、 声明 ActionServlet 的初始化参数
<init-param>子元素用于声明 Servlet 初始化参数。见4.2.1的代码清单。
4.2.3、配置欢迎文件清单
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
从第一个文件依次往后面找,如果没有找到,抛出404错误。
在欢迎文件中不能配置Servlet映射,可通过变通的方式处理。
1、在 Struts 配置文件中为被调用的 Action 创建一个全局的( global) 转发项,例如:
<global-forwards>
<forward name="welcome" path="HelloWordl.do" />
</global-forwards>
2、创建一个welcome.jsp文件:
<%@ tablib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<body>
<logic:forward name="welcome" />
</body>
</html>
3、最后配置欢迎页面为welcome.jsp即可。
4.2.4 配置错误处理
1、避免用户看到原始的错误信息
<error-page>
<error-code>404</error-code>
<location>/common/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/common/500.jsp</location>
</error-page>
2、也可为Web 容器捕获 Java 异常配置 <error-page>元素,这是需要设置<exception-type>子元素,它用于指定Java异常类。可捕获如下异常:
A、RuntimeException 或 Error
B、ServletException 或它的子类
C、IOException 或它的子类
例如:
<!-- The default error page -->
<error-page>
<exception-type>java.lang.IOException</exception-type>
<location>/common/IOError.jsp</location>
</error-page>
4.2.5 配置 Struts 标签库
<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-tiles</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
用户自定义的客户化标签库和标准的类似。
posted @
2008-03-21 11:51 CoderDream 阅读(94) |
评论 (0) |
编辑 收藏
1、
<html:form action="getImporterDonneesTypeList.do">
<div class="finFormulaire1" onClick="document.forms[1].submit();" STYLE="position:relative;right:10%;">
<div class="bouton" onclick="">
<span class="bold">
<rcd:label key="boutonNouveau"/>
</span>
<img src="<%= "/resources/"+ userMarque + "/img/common/btn/right.gif" %>" alt="" style="vertical-align:middle"/>
</div>
</div>
</html:form>
2
function goBack(){
document.forms[0].action="/initCommerentitesSearchAction.do";
document.forms[0].method="post";
document.forms[0].encoding="multipart/form-data";
document.forms[0].submit();
}
<div class="finFormulaire" align="center">
<div class="bouton" onClick="goBack();"><span class="bold"><rcd:label key="boutonRetour"/></span><img src="<%= "/resources/"+ userMarque + "/img/common/btn/right.gif" %>" alt="" style="vertical-align:middle"/></div>
</div>
posted @
2008-03-14 13:15 CoderDream 阅读(72) |
评论 (0) |
编辑 收藏