1. Swing 窗口 
  2. 1. JFrame窗口 
  3. 其构造方法如下: 
  4. JFrame() 
  5. JFrame(String title) 
  6. 其常用方法如下: 
  7. void setDefaultCloseOperation(int operation)  设置关闭按钮的操作 
  8.      setIconImage(Image p_w_picpath)   设置窗口图标 
  9.      setContentPane(Container contentPane)  设置内容面板 
  10.      setJMenuBar(JMenuBar menubar)   设置菜单栏 
  11.      repaint(long time , int x,int y,int width,int height)  在time毫秒内重绘指定的区域 
  12.      setLayout(Layout)  设置布局管理器 
  13.      remove(Component comp)  移除指定控件 
  14.      static void setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated)  新建的窗口是否具有外观装饰 
  15. 例如:         import javax.swing.*; 
  16.             import java.awt.*; 
  17.             public class jjtt extends JFrame{ 
  18.                 public jjtt(String title){ 
  19.                     super(title); 
  20.                     setSize(315,190); 
  21.                     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  22.                     Panel panel=new Panel(); 
  23.                     panel.add(new Button("a")); 
  24.                     setContentPane(panel); 
  25.                 } 
  26.                 public static void main(String args[]){ 
  27.                     JFrame.setDefaultLookAndFeelDecorated(true); 
  28.                     new jjtt("jjtt").setVisible(true); 
  29.                 } 
  30.             } 
  31.     setDefaultCloseOperation(int xx)   其参数可以取值: 
  32.     WindowConstants.DO_NOTHING_ON_CLOSE 
  33.     windowConstants.HIDE_ON_CLOSE 
  34.     windowConstants.DISPOSE_ON_CLOSE 
  35.     windowConstants.EXIT_ON_CLOSE  
  36.      
  37.  
  38. 2. JOptionPane 标准对话框 
  39. 此用于创建向用户发出信息的对话框,最常见的对话框有四种: 
  40. showConfirmDialog    showInputDialog  showMessageDialog   showOptionDialog 
  41.     1. showConfirmDialog 
  42.     static int showConfirmDialog(Component parentCom,Object message,String title,int optionType,int messageType,Icon icon) 
  43.     message要显示的内容     title标题  optionTYpe  对话框按钮的类型  messageType  为图标的类型  icon为自定义图标 
  44.      
  45.     optionType可以为: 
  46.     YES_NO_OPTION :是否按钮 
  47.     YES_NO_CANCEL_OPTION :是否取消按钮 
  48.     OK_CANCEL_OPTION :确定,取消按钮 
  49.      
  50.     MessageType可以为: 
  51.     ERROR_MESSAGE :出错图标 
  52.     INFORMATION_MESSAGE:信息图标 
  53.     WARING_MESSAGE :警告图标 
  54.     QUESTION_MESSAGE: 询问图标 
  55.     PLAIN_MESSAGE  :无图标 
  56.      
  57.     该各个返回值可以是: 
  58.     YES_OPTION   NO_OPTION  CANCEL_OPTION  OK_OPTION   CLOSED_OPTION 
  59.     例如: 
  60.     import javax.swing.*; 
  61.     public class jjtt extends JFrame{ 
  62.         public jjtt(){ 
  63.             setSize(345,260); 
  64.             setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  65.         } 
  66.         public static void main(String args[]){ 
  67.             jjtt j=new jjtt(); 
  68.             j.setVisible(true); 
  69.             int select=JOptionPane.showConfirmDialog(j,"go on ?","option",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); 
  70.             System.out.println(select==JOptionPane.YES_OPTION?"GO ON":"STOP"); 
  71.             int s=JOptionPane.showConfirmDialog(j,"go on ?","option",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,new ImageIcon("1.jpg")); 
  72.         } 
  73.     } 
  74.  
  75.         2. showMessageDialog 
  76.         static void showMessageDialog(Component parentcom,Object message,String titlt,int messageType,Icon icon) 
  77.         示例:  JOptionPane.showMessgaeDialog(this,"done","option",JOptionPane.INFORMATION_MESSAGE); 
  78.         3. showInputDialog 
  79.         static String showInputDialog(Component parentcomp,Object message,String title,int messageType) 
  80.         示例:  String postcode=JOptionPane.showInputDialog(this,"input code","option",JOptionPane.WARING_MESSAGE); 
  81.         4. showOptionDialog 
  82.         该类型对话框可以自定义操作按钮: 
  83.         static int showOptionDialog(Component parentcom,Object Message,String title,int optionType,int messageType,Icon icon,Object[] option,Object initialValue); 
  84.         这里的options表示用户可能的选择项数组,initialValue表示默认值只有在使用options时候才有意义,否则为null 
  85.          
  86.  
  87.  
  88. 3. JColorChooser 颜色选择器 
  89. 其提供了一个重要的静态方法  showDialog() ,   用于弹出颜色选择对话框 
  90. static Color showDialog(Component parentcom,String title,Color initialColor); 
  91. Color color=JColorChooser.showDialog(this,"choose color",Color.RED); 
  92. 示例: Label lable=new Label("aaa"); 
  93.     j.add(lable); 
  94.     Color color=JColorChooser.showDialog(j,"choose",j.getBackground()); 
  95.     lable.setForeground(color); 
  96.  
  97. 4. 文件选择器JFileChooser 
  98. 其常用的构造方法如下: 
  99. JFileChooser()  构造一个指向用户目录的JFileChooser 
  100. JFileChooser(File currentDirectory)  根据指定的路径构造JFileChooser 
  101. JFileChooser(String currentDirectoryPath)  根据指定的路径构造JFileChooser 
  102. 例如: 
  103. JFileChooser jfc1=new JFileChooser(); 
  104. jfc1.showOpenDialog(this);     在window平台下默认打开 我的文档 文件夹 
  105. JFileChooser jfc2=new JFileChooser(new File("."));    
  106. jfc2.showOpenDialog(this);       默认打开读取工作目录 
  107.  
  108. 有时可能只希望选择文件,或者只选择文件夹,JFileChooser通过三个静态属性: 
  109. static int DIRECTORIES_ONLY    仅显示目录 
  110. static int FILES_AND_DIRECTORIES   显示目录和文件 
  111. static int FILES_ONLY   仅显示文件 
  112. JFileChooser 同时提供了setFileSelectMode() 方法来设置模式 
  113.  
  114. 如果只希望选择word ...文件,也就是文件过滤,我们需要利用javax.swing.filechooser包中的文件扩展名过滤器 FileNameExtensionFilter 
  115. FileNameExtensionFilter(String description,String ...extensions)  description是对文件扩展名的描述,extensions表示具体的扩展名 
  116. 示例:  FileNameExtensionFilter filter=new FileNameExtensionFilter("office","doc","xml","ppt"); 
  117.  
  118. 现在我们需要打开该对话框,JFileChooser提供了静态方法  showDialog()   showOpenDialog() 
  119. int showDialog(Component parentcom,String approveButtonText)  弹出具有自定义打开按钮的自定义文件选择对话框 
  120. int showOpenDialog(Component parentcom)  在父容器中打开文件选择器对话框 
  121. 示例:  jfc1.showDialog(this,"choose file")           jfc2.showOpenDialog(this
  122. 区别在于前者使用"choose file" 作为打开按钮和对话框标题文字,而后者使用默认的打开字样 
  123.  
  124. 最后,我们怎么判断用户是选择了打开还是 取消, 可以通过showDialog() showOpenDialog() 的返回值来判定 
  125. 可能的返回值如下: 
  126. JFileChooser.CANCEL_OPRION 
  127. JFileChooser.APPROVE_OPTION 
  128. JFileChooser.ERROR_OPTION  
  129. 示例: 
  130. JFileChooser chooser=new JFileChooser(); 
  131.     chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 
  132.     FileNameExtensionFilter filter=new FileNameExtensionFilter("office","doc","xls","ppt"); 
  133.     chooser.setFileFilter(filter); 
  134.     int se=chooser.showOpenDialog(j); 
  135.     if(se==JFileChooser.APPROVE_OPTION){ 
  136.         try
  137.             Runtime.getRuntime().exec(new String[] { 
  138.                 "cmd.exe","/C",chooser.getSelectedFile().toString() 
  139.             }); 
  140.         }catch(IOException e){ 
  141.         e.printStackTrace(); 
  142.         } 
  143.     } 
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153. Swing 容器 
  154. 1. JPanel面板 
  155. 通过JPanel对控件进行包装,是一种通用的小型容器,其构造方法: 
  156. JPanel()  创建具有双缓冲和FlowLayoutb布局的JPanel 
  157. JPanel(boolean isDoubleBuffered)  是否使用双缓冲 
  158. JPanel(Layout)   具有指定Layout 
  159.    JPanel(Layout,boolean isDoubleBuffered)   
  160.  
  161. 2. JTabbedPanel 标签化面板 
  162. 此面板为用户提供了一组控件之间进行切换的能力,其构造方法如下: 
  163. JTabbedPanel()  创建一个具有默认 JTabbedPanel.TOP 选项卡布局的标签化面板 
  164. JTabbedPanel(int tabPlacement) 使用指定的布局tabPlacement创建  tabPlacement可以是JTabbedPanel.TOP JTabbedPanel.BOTTOM  JTabbedPanel.LEFT JTabbedPanel.ROGHT 
  165. JTabbedPanel(int tabPlacement,int tabLayputPolicy)  使用指定的布局  指定的布局策略  布局策略可以是JTabbedPane.WRAP_TAB_LAYOUT 自动折行 
  166. JTabbedPane.SCROLL_TAB_LAYOUT 滚动选项卡 
  167. JTabbedPane提供了addTab()方法用于添加选项卡标签,该方法格式如下: 
  168. void addTab(String title,Component com)   添加一个标题为title且没有图标的选项卡 com为单击此选项卡时要显示的控件 
  169. void addTab(String title,Icon icon,Component com)      有图标 
  170. void addTab(String title,Icon icon,Component com,String tip)  tip为鼠标指向选项卡时要显示的提示文字 
  171. 此过程为: 
  172. 创建JTabbedPane对象,创建包含各种组件的容器Container,添加选项卡标签 container作为addTab()的参数,将tabbedPane加到窗口 
  173.  
  174. 3. JSplitPane 拆分面板 
  175. 用于将两个控件进行图形化分割,而且这两个控件可以有用户交互式调整大小,其构造函数如下: 
  176. JSplitPane()  将控件水平排列 
  177. JSplitPane(int newOrientation) 创建一个指定方向且无连续布局的JSplitPane,方向可以是 JSplitPane.HORIZONTAL_SPLIT 水平 JSplitPane.VERTICAL_SPLIT垂直 
  178. JSplitPane(int newOrientation,boolean newContinuousLayout)  具有指定重绘方式,为true时表示当分割条改变位置时 连续重绘控件,否则只有当移动停止时才重绘控件 
  179. JSplitPane(int newOrientation,boolean newContinuousLayout,Component newLeftComponent,Component newRightComponent)  第一个控件出现在左边或上边,第二个出现在下面或右边 
  180. JSplitPane(int newOrientation,Component newLeftComponent,Component newRightComponent)  不连续重绘 
  181. 示例: 
  182. JSplitPane splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,new Button("a"),new Button("b")); 
  183.  
  184. 4. JScrollPane 滚动面板 
  185. 此面板是根据滚动条策略显示水平或垂直滚动条,其构造方法如下: 
  186. JScrollPane()  创建一个根据面板内容自动显示水平和垂直滚动条的面板 
  187. JScrollPane( Component view ) 创建一个显示指定控件view  自动显示滚动条 
  188. JScrollPane(Component view ,int vsbPolicy,int hsbpolicy)  具有指定滚动策略  vsbpolicy 可以是ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED ,  当需要时垂直 
  189. ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER 从不显示垂直滚动条   ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS 
  190. ScrollPaneConstants.HPRIZONTAL_SCROLLBAR_AS_NEEDED  ScrollPaneConstants.HPRIZONTAL_SCROLLBAR_NEVER  ScrollPaneConstants.HPRIZONTAL_SCROLLBAR_ALWAYS 
  191. 示例: 
  192. JScrollPane srcollPane=new JScrollPane(new Button("aa"),ScrollPaneConstants.HPRIZONTAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
  193.  
  194.  
  195. 工具栏JToolBar 
  196. 其提供了快捷方式,其创建方法如下: 
  197. JToolBar()  默认水平的工具栏 
  198. JToolBar(int orientation)  具有指定方向  JToolBar.HORIZONTAL  JToolBar.VERTICAL 
  199. JToolBar(String name)  具有指定名称的工具栏 
  200. JToolBar(String name,int orientation) 
  201. 示例: 
  202. JToolBar toolBar=new JToolBar("toolbar"); 
  203. toolbar.setFloatable(false);         //不允许拖动工具栏 
  204. Button o=new Button("open"); 
  205. Button c=new Button("close"); 
  206. Button s=new Button("save"); 
  207. Button e=new Button("exit"); 
  208. toolBar.add(o); 
  209. toolBar.add(c); 
  210. toolBar.add(s); 
  211. toolBar.add(new JToolBar.Separator()); //按钮之间添加分隔符 
  212. toolBar.add(e); 
  213.     toolBar.setLayout(new FlowLayout(FlowLayput.CENTER,1,1)); 
  214. add(toolBar); 
  215.  
  216.  
  217. 5. 桌面面板和内部框架 
  218. JDesktopPane用于创建多文档界面的容器,可以在其内部包含多个子窗口。其只有一个构造方法:  JDesktopPane() 
  219. 对于子窗口,JDesktopPane提供了setDragMode(int dragMode) 方法设置拖拉方式,参数可以是 JDesktopPane.LIVE_DRAG_MODE 拖动子窗口时候显示器内容 
  220. JDesktopPane.OUTLINE_DRAG_MODE  不显示 
  221. 我们可以先创建JDesktopPane然后向其内部加入子窗口 JInternalFrame,其构造方法如下: 
  222. JInternalFrame()  子窗口不可调整大小不可最大最小化,不可关闭 
  223. JInternalFrame(String title)  具有标题 
  224. JInternalFrame(String title,boolean resizable)  是否可调大小  
  225. JInternalFrame(String title,boolean resizable,boolean closable)   是否可关闭 
  226. JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable)  是否可最大化 
  227. JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable,boolean iconifiable) 是否可图标化 
  228. 示例: 
  229. import javax.swing.*; 
  230. import java.awt.*; 
  231. public class jjtt extends JFrame { 
  232.     public  jjtt(String title){ 
  233.         super(title); 
  234.         setSize(900,1236); 
  235.         setResizable(false); 
  236.         JDesktopPane desktop=new CreateDeaktopPane(); 
  237.         createFrame(desktop,3);        //创建三个子窗口 
  238.         setContentPane(desktop); 
  239.     } 
  240.     protected void createFrame(JDesktopPane desktop,int num){ 
  241.         JInternalFrame frame=null
  242.         for(int i=0;i<num;i++){ 
  243.             frame=new JInternalFrame("窗口"+i,true,true,true,true); 
  244.             frame.setSize(179,100); 
  245.             frame.setLocation(i*20,i*20); 
  246.             frame.setVisible(true); 
  247.             desktop.add(frame); 
  248.         } 
  249.     } 
  250.     public static void main(String args[]){ 
  251.         //JFrame.setDefaultLookAndDecorated(false); 
  252.         new jjtt("multi").setVisible(true); 
  253.     } 
  254.     class CreateDeaktopPane extends JDesktopPane{ 
  255.         public CreateDeaktopPane(){ 
  256.             setDragMode(JDesktopPane.LIVE_DRAG_MODE); 
  257.         } 
  258.         protected void paintComponent(Graphics g){ 
  259.             g.drawImage(Toolkit.getDefaultToolkit().getImage("1.jpg"),0,0,this); 
  260.         } 
  261.     } 
  262.  
  263. Swing控件 
  264. 1. Jlabel 
  265. 其有6种构造方法: 
  266. JLabel()   
  267. JLabel(Icon p_w_picpath)  
  268. JLabel(Icon p_w_picpath,int horizontalAlignment ) 水平对齐方式  horizontalAlignment 可以是SwingConstants.LEFT 左对齐   
  269. SwingConstants.CENTER    SwingConstants.RIGHT  SwingConstants.LEADING 对齐文本开始边  SwingConstants.TRAILING 对齐文本结束边 
  270. JLabel(String text)  具有指定文本 
  271. JLabel(String text,Icon icon ,int horizontalAlignment ) 
  272. JLabel(String text,int horizontalAlignment ) 
  273. 示例: 
  274. JPanel pane=new JPanel(); 
  275. JLabel label1=new JLbael("1",new ImageIcon("7.icon"),SwingConstatns.CENTER); 
  276. JLabel label2=new JLbael("2",new ImageIcon("7.icon"),SwingConstatns.CENTER); 
  277. panel.add(label1); 
  278. panel.add(label2); 
  279.  
  280. 文本控件 
  281. 2. JTextField 
  282. 其构造方法如下: 
  283. JTextField() 
  284. JTextField(Document doc,String text,int col) 指定的Document对象创建文本框,一般情况下其默认的文档类型是PlainDocument对象 
  285. JTextField(int col) 
  286. JTextField(String text) 初始文本 
  287. JTextField(String text,int col) 
  288. 示例: 
  289. JTextField no,name,course; 
  290. no=new JTextField(10); 
  291. name=new JTextField("zhang san"); 
  292. course=new JTextField(); 
  293.  
  294.  
  295. JPasswordField 
  296. 用于创建密码框,其还提供了一个方法 setEchoChar() 方法,用于设置用户输入时的回显字符 
  297. 如果希望输入密码时显示为 * 则可以: 
  298. JPasswordField pw=new JPasswordField(10); 
  299. pw.setEchoChar('*'); 
  300. 其提供 getPassword() 方法返回存储有密码的字符数组 
  301.  
  302. JTextArea 
  303. 其本身不带滚动条,如需要滚动效果,应将其对象加入一个滚动面板中,其提供了2个方法用于设置换行策略 
  304. void setLineWrap(boolean wrap)  如果是true当长度大于所分配的长度时,自动换行 
  305. void setWrapStyleWord(boolean word)  若为true当长度大于宽度时,将在单词边界处换行,否则在字符边界处换行  默认为false 
  306.  
  307. JFormattedTextField 
  308. 其是对JTextField的扩展,添加对数据格式的支持,其常用的构造方法: 
  309. JFormattedTextField() 
  310. JFormattedTextField(Format format)  创建一个基于format的格式化文本 
  311. JFormattedTextField(Object value) 具有默认值 
  312. 最简单使用方式为: 
  313. JFormattedTextField f=new JFormattedTextField(); 
  314. f.setColumns(10); 
  315. 不过这样没有意义,要格式化输入,需要配合java.text包中的DataFormat  MessageFormat  NumberFormat  它们都是Format的子类 
  316.  
  317. DateFormat 该类提供了静态方法用于格式化日期 
  318. static DateFormat getDateFormat()  获取具有默认用于环境 格式化风格 的日期格式器 
  319. static DateFormat getDateInstance(int style)  style可以是 DateFormat.MEDIUM   DateFormat.LONG  DateFormat.SHORT 
  320. static DateFormat getDateInstance(int style,Locale alocale) 给定的区域 
  321. static DateFormat getInstance()   默认为SHORT风格 
  322. 示例: 
  323. JFormattedTextField ft=new JFormattedTextField(DateFormat.getDateInstance(DateFormat.MEDIUM)); 
  324. ft.setValue(new  Date());  //初始值为当前日期 
  325.  
  326. MessageFormat 用于格式化信息,其常用构造函数: 
  327. MessageFormat(String patten)  构造默认用于环境和指定模式 
  328. MessageFormat(String patten,Locale local) 用于环境 
  329. 示例: 
  330. JFormattedTextField ft=new JFormattedTextField(); 
  331. ft.setColumns(20); 
  332. Object[]  amount={
    "2334","399"}; 
  333. String patten="total fee is {0}, own {1}";  {
    0} 表示第一个元素 
  334. ft.setValue(MessageFormat.format(patten,amount)); 
  335.  
  336. NumberFormat 其提供了很多方法用于格式化数字 
  337. static NumberFormat getCurrencyInstance()  返回默认语言环境的货币格式 
  338. static NumberFormat getCurrencyInstance(Locale local)  返回指定语言环境的货币格式 
  339. static NumberFormat getInstance()   返回默认用于环境的通用数值格式 
  340. static NumberFormat getInstance(Locale local) 
  341. static NumberFormat getIntegerInstance()  默认环境的整数格式 
  342. static NumberFormat getIntegerInstance(Locale local) 
  343. static NumberFormat getPercentInstance()   返回默认环境的百分比格式 
  344. static NumberFormat getPercentInstance(Locale local) 
  345.  
  346.  
  347. 示例: 
  348. import javax.swing.*; 
  349. import java.awt.*; 
  350. import java.text.*; 
  351. import java.util.*; 
  352. public class jjtt extends JFrame{ 
  353.     public jjtt(){ 
  354.         setSize(500,600); 
  355.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  356.         JPanel panel=new JPanel(); 
  357.         panel.add(new JLabel("username")); 
  358.         panel.add(new JTextField(10)); 
  359.         panel.add(new JLabel("passwrod")); 
  360.         JPasswordField password=new JPasswordField(10); 
  361.         password.setEchoChar('*'); 
  362.         panel.add(password); 
  363.         panel.add(new JLabel("bei zhu")); 
  364.         JTextArea memo=new JTextArea(3,12); 
  365.         JScrollPane scrollPane=new JScrollPane(memo); 
  366.         panel.add(scrollPane); 
  367.         panel.add(new JLabel("date")); 
  368.         JFormattedTextField ft=new JFormattedTextField(DateFormat.getDateInstance(DateFormat.MEDIUM)); 
  369.         ft.setValue(new Date()); 
  370.         ft.setEditable(false); 
  371.         ft.setForeground(Color.red); 
  372.         panel.add(ft); 
  373.         panel.add(new JLabel("pour")); 
  374.         JFormattedTextField ft1=new JFormattedTextField(NumberFormat.getCurrencyInstance(new Locale("zh","cn"))); 
  375.         ft1.setColumns(10); 
  376.         ft1.setValue(new Double(1234498)); 
  377.         panel.add(ft1); 
  378.         add(panel); 
  379.     } 
  380.     public static void main(String args[]){ 
  381.         new jjtt().setVisible(true); 
  382.     } 
  383.