`
a1520708
  • 浏览: 27083 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
swing的mvc swing
与VCL、AWT等框架中的图形界面框架不同,Swing创造性的采用了MVC(Model View Controller) 模式。MVC 把控件(Component)划分成三个部分:模型( Model):管理这个模块中所用到的数据和值,如某个数据的最大值、最小值、当前值等数据;视图( View):管理如何将模型显示给用户;控制器(Controller) 决定如何处理用户和该模块交互时产生的事件,如用户单击一个按钮等。Sun 出于对视图和控制器之间的依赖关系的考虑, 在 Swing 设计中将 MVC体系简化为分离模型体系 ( Separable Model Architecture) , 将其中的控制器和视图结合成 UI 代理。
界面中的每个控件都包含三种特征:
它的状态:比如一个按钮的状态
它的外观:颜色、尺寸等
它的行为:对事件作出的反应
以一个按钮为例,它有可用、不可用状态,在不同的LookAndFeel中有不同的外观显示,在鼠标按下、鼠标右击等事件中有自己独特的响应方式。如果管理按钮状态、绘制按钮外观,响应时间等任务都由按钮负责的话就违背了面向对象设计中的“单一责任原则”。Swing开发人员采用MVC模式解决了此问题,将控件的LookAndFeel同一个对象关联到一起,同时将其内容保存到另一个对象中。控制器负责控制用户输入事件。比如鼠标单击、按键操作等,它会决定将这些事件转换成模型中的改变.还是视图中的改变。例如,假定用户在文本框中按下某个键,控制器就会调用模型的“插入字符”命令。随后,模型会通知视图更新来显示新的模型。视图不用关心什么时候进行文字改变,只要模型通知它更新它就会更新。这样控制器只用与用户交互并把交互结果反映到模型中去;模型负责维护状态,当状态变化时通知视图更新显示;视图不负责用户交互的状态维护,它只是根据模型中的状态绘制不同的界面。
Swing中的大多数控件的模型是由一个名字以Model结尾的接口实现的。比如按钮对应的模型接口就是 ButtonModel,JDK中定义了ButtonModel的默认实现类DefaultButtonModel。下面是ButtonModel各个方法的说明:
boolean isArmed():如果按钮被按下,且鼠标指针仍停留在按钮上则返回true
boolean isSelected():如果按钮处于选择状态则返回true
boolean isEnabled():如果按钮可用则返回true
boolean isPressed():如果按钮被按下,但鼠标没有松开,则返回true
boolean isRollover():如果鼠标指针在按钮之上则返回true
public int getMnemonic():返回按钮的助记键
public String getActionCommand():返回命令字符串
此外还有对应的设置状态方法:public void setArmed(boolean b)、public void setSelected(boolean b)、public void setEnabled(boolean b)、public void setPressed(boolean b)、public void setRollover(boolean b)、public void setMnemonic(int key)、public void setActionCommand(String s)等。
每一个JButton都保存着一个ButtonModel对象,我们可以通过JButton的getModel方法来取得该模型对象:
JButton btn = new JButton(“test”);
ButtonModel btnModel = btn.getModel();
通过这个模型对象我们就可以得到按钮的是否可用等状态,不过这个模型是给控件开发者使用的,对于普通使用者来说无需直接调用它,JButton提供了方法来间接的取得这些属性,这一点可以从AbstractButton类的isSelected方法中看出来:
public boolean isSelected()
{
return model.isSelected();
}
Swing中大部分控件都由自己的模型,比如JList控件的ListModel、JTable的TableModel、JSpinner的SpinnerModel、JComboBox的SpinnerModel(SpinnerModel是从ListModel派生出来的),这些模型也由默认的实现,名称通常为模型名前加Default。
Swing中的大多数控件的视图是由一个名字以UI结尾的类实现的,比如按钮对应的模型接口就是 ButtonUI。由于视图在不同的LookAndFeel中有不同的展现形式,所以控件的视图对每一种LookAndFeel都提供了不同的实现。以JLabel为例,它就有MetalLabelUI、MotifLabelUI、WindowsLabelUI等对应不同LookAndFeel的实现。所有的视图都要直接或者间接的从ComponentUI抽象类派生,ComponentUI类中的方法都是供Model回调使用的,下面是ComponentUI主要方法的说明:
public void installUI(JComponent c):这个方法在ComponentUI 实例被安装到UI代理的时候被触发,用来根据LookAndFeel配置控件。它需要完成如下工作:为Color、Font、Border、Icon等类型的属性设定默认值;根据需要设置布局管理器;创建子控件;初始化监听器;为控件设置PropertyChangeListener 监听器以检测控件属性变化事件;初始化快捷键、Tab键顺序等;初始化数据;
public void uninstallUI(JComponent c):这个方法在ComponentUI 实例被从UI代理移除的时候触发。需要在此方法中撤销任何在installUI中进行的配置,要保证JComponent实例变为洁净状态(也就是没有监听器,没有LookAndFeel专有属性等)。它需要完成如下工作:从控件中移除border;从控件中移除布局管理器;从控件中移除子控件;从控件中移除事件、属性监听器、从控件中移除快捷键、Tab键顺序等;将数据标记为可以垃圾回收。
public void paint(Graphics g, JComponent c):为本视图的LookAndFeel绘制控件。
public void update(Graphics g, JComponent c):通知UI代理绘制指定控件。当特定的控件被绘制的时候此方法会被触发。这个方法的默认实现是用背景色填充控件,并且立即调用paint方法。
public Dimension getPreferredSize(JComponent c):返回当前LookAndFeel下控件的最佳尺寸。默认实现是返回null;
public Dimension getMinimumSize(JComponent c):返回当前LookAndFeel下控件的最小尺寸。默认实现是返回getPreferredSize的值;
public Dimension getMaximumSize(JComponent c):返回当前LookAndFeel下控件的最大尺寸。默认实现是返回getPreferredSize的值;
public boolean contains(JComponent c, int x, int y):判断指定的x、y坐标是否存在于当前LookAndFeel下的控件中。
public static ComponentUI createUI(JComponent c):为指定的控件返回UI代理实例。如果UI代理子类是无状态的,它也可以返回多控件共享的实例。如果UI代理子类是有状态的,则它必须为某个控件返回一个新的实例。
public int getAccessibleChildrenCount(JComponent c):返回所有可访问子控件的数量。
public Accessible getAccessibleChild(JComponent c, int i):返回指定的子控件
网站记录 网站
1、java eclipse android网站 英文 http://www.vogella.de/
2、Web入门者必看的HTML代码编写的30条军规(1)  http://developer.51cto.com/art/201201/310974.htm
3、swing变成基础与进阶 http://developer.51cto.com/art/201201/313153.htm
swing 启动界面 swing
import javax.swing.*;
import java.awt.*;
import java.net.*;
public class JSplashWindow extends JWindow implements Runnable
{
 Thread splashThread=null;
 public JSplashWindow()
 {
  setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//设置启动界面的光标样式
  JPanel splash=new JPanel(new BorderLayout());
  URL url=getClass().getResource("1.jpg");//获得指定资源文件的绝对路径。
  if(url!=null)
  {
   splash.add(new JLabel(new ImageIcon(url)),BorderLayout.CENTER);
  }
  setContentPane(splash);
  Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕的大小
  pack();
  setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2);//使启动窗口居中显示
  start();
 }
 public void start()
 {
  toFront();//window类的toFront()方法可以让启动界面显示的时候暂时在最前面,用window类的setAlwayOnTop(boolean)方法可以让窗口总保持在最前面。
  splashThread=new Thread(this);
  splashThread.start();
 }
 public void run()
 {
  try
  {
   setVisible(true);
   Thread.sleep(50000);
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
  dispose();
 }
 static void showFrame(String title)
 {
  JFrame frame=new JFrame(title);
  frame.setSize(400,300);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  Dimension screenSize=frame.getToolkit().getScreenSize();//获得屏幕的大小
  Dimension frameSize=frame.getSize();
  if(frameSize.height>screenSize.height)
  {
   frameSize.height=screenSize.height;
  }
  if(frameSize.width>screenSize.width)
  {
   frameSize.width=screenSize.width;
  }
  frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
  frame.setVisible(true);
 }
 public static void main(String[] args)
 {
  showFrame("Demo splash window");
  JSplashWindow splash=new JSplashWindow();
  //splash.start();
 }
}
/*getToolkit()方法是java.awt.window类的方法它可以得到一个Toolkit类。Toolkit对象的getScreenSize()方法可以得到屏幕的大小。
getScreenSize()方法返回一个 Dimension对象,它的width,height属性就是屏幕的宽和高。
Object getClass()方法是java.lang.Object类的方法它可以获得当前正在运行类的对象
URL getResource(String name)方法是java.lang.Class类的方法用此方法可以获得一个指定资源文件的绝对路径。*/
刷新JList中的一个元素 swing
//刷新
    Rectangle rect = list.getCellBounds(index, index);
   list.repaint(rect);
按键绑定事件 house源码
//root面板, 动作, 按键名称, 按键代码,
public static void registerKeyEvent(RootPaneContainer root, Action action, String keyName, int keyCode, int modifiers)
{
  if (root == null)
  return;
  JRootPane rootPane = root.getRootPane();
  InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
  inputMap.put(KeyStroke.getKeyStroke(keyCode, modifiers), keyName);
  rootPane.getActionMap().put(keyName, action);
}

KeyStroke,表示按键与组合键的一个类,可获取共享实例
修改序列 oracle
DROP SEQUENCE seq_role;
create sequence seq_role
minvalue 1
maxvalue 1000000000000000000000000000
start with ?
increment by 1
cache 20;
iframe中的页面调用 父窗口中 iframe
window.parent.****();
bat启动java程序,并关闭dos窗口 dos
@echo off
#start eclipse.exe -noexit -clean 
start javaw %OPT% be.ibridge.kettle.spoon.Spoon %1 %2 %3 %4 %5 %6 %7 %8 %9
#start eclipse.exe -noexit -console -consoleLog -clean 
#rem eclipse.exe -exit -clean
#exit

@echo off并不是DOS程序中的,
而是DOS批处理中的。
当年的DOS,所有操作都用键盘命令来完成,
当你每次都要输入相同的命令时,
可以把这么多命令存为一个批处理,
从此以后,只要运行这个批处理,
就相当于打了几行、几十行命令。

DOS在运行批处理时,
会依次执行批处理中的每条命令,
并且会在显示器上显示,
如果你不想让它们显示,
可以加一个“echo off”

当然,“echo off”也是命令,
它本身也会显示,
如果连这条也不显示,
就在前面加个“@”。
html字符的替换 js
var test = '({"name":"ss"})';

var json = '({"name":"ss"})';

var newStr = test.replace(/"/g, '"');
alert(newStr);

alert(eval(newStr).name);
监听回车事件,触发方法 jquery
    $(document).ready(function loginEnterCheck(){       
          $("html").die().live("keydown",function(event){       
                if(event.keyCode==13){      
                    //调用登陆方法;  
                    loginCheck();       
                 }       
          });       
    });  
java中从反斜杠路径中截取文件名的办法 java
例如:获取到的文件路径为C:\Documents and Settings\Leeo\My Documents\logo.gif

      现在想要取得图片的名称logo.gif,我们知道反斜杠“\”是转义字符,所以不能直接

String temp[] = filePath.split("\");//filePath的值就是上面的文件路径

      来分割文件路径,而应该这样写

/*
*java中\\表示一个\,而regex中\\也表示\,
*所以当\\\\解析成regex的时候为\\
**/
String temp[] = filePath.split("\\\\");

      在Linux系统中

System.getProperty("file.separator", "\\")

      输出为“/”,而在Windows系统中输出为“\”,所以要兼容两者可以这么写

String temp[] = filePath.replaceAll("\\\\","/").split("/");

      获取文件名称的完整代码如下:

String temp[] = filePath.replaceAll("\\\\","/").split("/");
String fileName = ""
if(temp.length > 1){
    fileName = temp[temp.length - 1];
}
JComboBox添加监听 swing
comboBox.addItemListener(new ItemListener() {
      @Override
      public void itemStateChanged(ItemEvent e) {
        // TODO Auto-generated method stub
        if (e.getStateChange() == ItemEvent.SELECTED) {
          loadModel(comboBox.getSelectedItem().toString());
        }
      }
    });
远程调试 weblogic
在startweblogic.xml中加入这一句
set JAVA_OPTIONS= -Xdebug -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=7777,suspend=n

然后 %JAVA_HOME%\bin\java %JAVA_VM%  后面加上 %JAVA_DEBUG% 
同步日志 oracle
select distinct a.co_code, a.co_name,a.compo_name, a.compo_id, b.usum, c.rsum
  from as_log a,
(select log.co_code,log.compo_id,count(log.user_id) usum from as_log log group by log.co_code, log.compo_id) b ,
(select log.co_code,log.compo_id,count(distinct log.user_id) as rsum from as_log log  group by log.co_code,log.compo_id) c
where a.co_code = b.co_code and b.compo_id = a.compo_id and a.co_code = c.co_code and a.compo_id = c.compo_id
触发器自增长 oracle
--ESB sequence 序列
drop sequence SEQ_ESB_ID;

create sequence SEQ_ESB_ID 
minvalue 0 
maxvalue 9999999999 
start with 1 
increment by 1 
cache 20 
order;

--触发器,自增长

create or replace trigger tri_ESB before insert on DX_ESB for each row
begin
     select SEQ_ESB_ID.Nextval into :new.id from dual;
end;
导库 oracle
--导入导出语句
exp username/passed@sid file=expfile.dmp 

imp username/passed@sid file=expfile.dmp full=y

--创建临时表空间
CREATE TEMPORARY TABLESPACE gmap60_temp
TEMPFILE 'D:\app\oradata\orcl\gmap60_temp.dbf'
SIZE 32M
AUTOEXTEND ON
NEXT 32M MAXSIZE unlimited;
--创建表空间
CREATE TABLESPACE gmap60
LOGGING
DATAFILE 'D:\app\oradata\orcl\gmap60.DBF' 
SIZE 32M 
AUTOEXTEND ON 
NEXT 32M MAXSIZE unlimited;
--创建用户
create USER gmap60 IDENTIFIED BY "1"
DEFAULT TABLESPACE gmap60
TEMPORARY TABLESPACE gmap60_temp;
--给用户分配权限
grant connect,dba,resource to gmap60;
--删除表空间
DROP TABLESPACE YN_DATA INCLUDING CONTENTS AND DATAFILES
--修改密码
alter user xxxx identified by
同义词 oracle
select * from demo.tax_user_salary@DBLINK_UFGOVTAX2

drop  SYNONYM hr_user;

CREATE  SYNONYM hr_education FOR demo.hr_education@DBLINK_UFGOVTAX2

drop  SYNONYM tax_user_salary;

select * from hr_education
oracle instr oracle
语法如下:instr( string1, string2 [, start_position [, nth_appearance ] ] )

string1 源字符串,要在此字符串中查找。

string2 要在string1中查找的字符串.

start_position 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

 

nth_appearance 代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。


注意:

如果String2在String1中没有找到,instr函数返回0.

oracle drop表 ,恢复 oracle
flashback table hr_user to before drop
eclipse块选择模式快捷键 快捷键
alt+shift + a
查询一个表,或视图中字段的多少 oracle
select count(*) from all_tab_columns where table_name = 'V_TAX_USER_KZXX'
swing 打开网页 swing
1、通过命令打开
 Runtime run = Runtime.getRuntime();
		try {
		
			String url = "rundll32 url.dll,FileProtocolHandler url"

			
			run.exec(url);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
2、Desktop desk = Desktop.getDesktop();

				try {
					desk.browse(new URL(url).toURI());
				} catch (Exception e1) {
					e1.printStackTrace();
				}
JFileChooser swing
JFileChooser filechooser = new JFileChooser();//创建文件选择器
	 filechooser.setCurrentDirectory(new File("."));//设置当前目录
	 filechooser.setAcceptAllFileFilterUsed(false);
	 //filechooser.setFileSelectionMode(JFileChooser.SAVE_DIALOG);
	 //显示JAVA源文件
	 filechooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
	   public boolean accept(File f) { //设定可用的文件的后缀名
	     if(f.getName().endsWith(".xls")||f.isDirectory()){
	       return true;
	     }
	     return false;
	   }
	   public String getDescription() {
	     return "excel(*.xls)";
	   }
	 });
   
	 
	 int returnVal = filechooser.showSaveDialog(new JFrame());
	 
	 if(returnVal==JFileChooser.APPROVE_OPTION){
	 	String savefilePath = null;
	 	if(filechooser.getSelectedFile().getAbsolutePath().endsWith(".xls")){
	 		savefilePath = filechooser.getSelectedFile().getAbsolutePath();
	 	}else{
	 		savefilePath = filechooser.getSelectedFile().getAbsolutePath() + ".xls";
	 	}
	 	jtable.export2Excel(savefilePath, null, null,
	             new ColumnFilter() {
	               public boolean accept(int columIndex, JGroupableTable table) {
	                 return true;
	               }
	             });
	 	
		JOptionPane.showMessageDialog(null, "保存成功","提示",JOptionPane.INFORMATION_MESSAGE);
sqlmap中不能有分号 sqlmap
sqlmap中不能有分号
将一个文件夹中的所有文件名导入到一个txt文件中 dos
dir c:\my /b >>c:\my.txt 
通过webstart向高速缓存导入jar包 jar, 缓存,webstart
1、命令为:
javaws -import http://127.0.0.1:7001/download/jnlp/installJars.jnlp -silent

2.jnlp格式为
<?xml version='1.0' encoding='UTF-8'?>          
<jnlp codebase='http://10.11.114.70:7001/'>     						
    <information>                               
        <title>ClientSet</title>                
        <vendor>UFGOV</vendor>                  
        <description>get init jars</description>
        <offline-allowed/>                      
    </information>                              
                                                
    <resources>                                 
     <jar href='./applets/plugins/com.ufgov.gmap.spi_1.0.0.jar' />    
     <jar href='./applets/plugins/com.ufgov.admin.spi_1.0.0.jar' />    
   
    </resources>                                            
                                                            
    <applet-desc                                            
      name='ClientSet'                                      
      main-class='com.ufgov.clientsetting.component.JApplet'
      width='527'                                           
      height='428'>                                         
  	</applet-desc>                                          
                                                            
  <security>                                                
  	<all-permissions/>                                      
  </security>                                               
</jnlp>               
给java客户端导入证书 数字证书
1、 keytool -export -alias ufgov -keystore ufgov.jks -file ~/test.csr  -storepass 111111
导出证书,csr类型的 ,验证csr好使,crt的不知道为什么不好使;

2、keytool -import -alias MyAlias -file c:\my_cert.csr -keystore "C:\Documents and Settings\myuserid\Application Data\Sun\Java\Deployment\security\trusted.certs" -storepass "" -noprompt

-file后面为我们导出的证书,这里要导入
-keystore后面为要导入到的证书库
-storepass "" 后面为空即可
-noprompt 表示不用提示是否选项

3、执行bat文件出现停止不动现象,解决办法
br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String errorMsg = null;
while((errorMsg = br.readLine()) != null){
	System.out.println(errorMsg);
}
将process中的信息导引出来 ,估计是本身的存储太小,需要输出到一个地方

4、证书库地址 "%USERPROFILE%\Application Data\Sun\Java\Deployment\security\trusted.certs" 
win7 和 XP的不同
查看缓存的时候用到的 dos
dir /s /b
操作系统分隔符,用来处理不同的操作符问题 java
System.getProperty("file.separator")

File.separator
按钮背景设置透明 html
<input   type = "button"   value = "Button"   style = "background-color: transparent; border: 0;" >   
< input   id = "Button1"   type = "button"   value = "button"   style = " FILTER: alpha(opacity=30);" />   
< input   id = "Button1"   type = "button"   value = "button"   style = "opacity:0.3;" />   
< input   id = "Button1"   type = "button"   value = "button"   style = "-moz-opacity:0.3;" />   
Global site tag (gtag.js) - Google Analytics