从制造到创造
软件工程师成长之路
posts - 218,  comments - 45,  trackbacks - 0
需求:用实线把各个面板圈起来,然后把面板的名字写在圈圈的左上角。

原始画面:


由于原来的程序使用的是AWT中的Panel,而这个控件我们没有设置titleBorder的方法。
现在将更新为Swing中的JPanel面板,代码分别为:
旧代码:
    Panel pRoboCtrl=new Panel();
    pRoboCtrl.setLayout(
new GridLayout(5125));
    
    
// Robot控制面板的第一排,面板的标题
        Panel pR1=new Panel(); 
        pR1.setLayout(
new GridLayout(1123));
     
        
//Row One
    pR1.add(new Label("Robot Control",Label.CENTER));
新代码:
    JPanel pRoboCtrl=new JPanel();
    pRoboCtrl.setLayout(
new GridLayout(4125));
    Border titleBorder1
=BorderFactory.createTitledBorder("Robot Control");            
    pRoboCtrl.setBorder(titleBorder1);   
原来的处理方式是将一个Label放到Panel中,然后将这个Panel放到外层的Panel中,新方式是将外层Panel定义成JPanel,然后设置Border的值为BorderFactory产生的一个实例。



解决这个问题后,新问题又来了,两个JPanel中的内容不一样,上面多,下面少,但是现在面板却是一样大,要改成面板高度自动适应。
其实这只需要修改一行代码就可以了,代码如下:
旧代码:
CP.setLayout(new GridLayout(3125));  
新代码:
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(20not 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)编辑 收藏

1、RCD-499:某个<html:text/>不能修改。

style="color:#BCBCBC;">

posted @ 2008-03-12 10:23 CoderDream 阅读(41) | 评论 (0)编辑 收藏
仅列出标题  下一页

<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(4)

我参与的团队

随笔分类(214)

随笔档案(214)

文章分类(2)

文章档案(2)

收藏夹(445)

友情链接