澳门美高梅手机网站【迷失东京】4-港区的图书馆原来是如此的

1.按钮(Jbutton)

     
Swing中的按钮是Jbutton,它是javax.swing.AbstracButton类的子类,swing中的按钮可以来得图像,并且可将按钮设置也窗口的默认图标,而且还足以以大半只图像指定给一个按钮。

      在JButton中产生如下几个比较常用的构造方法。

  • JButton(Icon icon): 按钮上显得图标。
  • JButton(String text): 按钮上显示字符。
  • JButton(String text,Icon icon): 按钮上既显示图标又先给字符。

      JButton类的措施:

  • setText(String text): 设置按钮的竹签文本。
  • setIcon(Icon defaultIcon): 设置按钮在默认状态下显得的图。
  • setRolloverIcon(Icon rolloverIcon):
    设置当光标移动及按钮上方时显示的图片。
  • setPressedIcon(Icon pressedIcon): 设置当按钮被按下时展示的图形。
  • setContentAreaFilled(boolean b):
    设置按钮的背景也同名,当设为fase时表示未绘制,默认为绘制。
  • setBorderPainted(boolean b):
    设置也非绘制按钮的边框,当设为false时表示不绘制,默认为绘制。

     
按钮组件是GUI中尽常用的平等栽组件。按钮组件可以捕捉到用户的单击事件,同时用按钮事件处理机制应用户之求。JButton类是Swing提供的按钮组件,在单击JButton类对象创建的按钮时,会发生一个ActionEvent事件。

      代码实例:

 1 package jFrameDemo;
 2 
 3 import java.applet.*;
 4 import java.awt.*;
 5 import java.awt.event.*;
 6 
 7 @SuppressWarnings("all")
 8 public class ButtonDemo extends Applet implements ActionListener {
 9     String msg = "";
10     Button yes,no,undecided;
11     
12     public void init() {
13         yes = new Button("Yes");
14         no = new Button("No");
15         undecided = new Button("Undecided");
16         
17         add(yes);
18         add(no);
19         add(undecided);
20         
21         yes.addActionListener(this);
22         no.addActionListener(this);
23         undecided.addActionListener(this);
24     }
25     
26     public void actionPerformed(ActionEvent ee) {
27         String str = ee.getActionCommand();
28         if (str.equals("Yes")) {
29             msg = "您选择了Yes!";
30         }else if (str.equals("No")) {
31             msg = "您选择了No!";
32         }else {
33             msg = "您选择了Undecided!";
34         }
35         repaint();
36     }
37     
38     public void paint(Graphics g){
39         g.drawString(msg, 6, 100);
40     }
41 }

运作效果如下:

澳门美高梅手机网站 1

怀念记录下团结以霓虹的所呈现、所闻、所感,

或是只是是流水账,或多年后看到这些文字会发笑,

但自怀念在未来通过这些字感受过往。

Episode 4

2.单精选按钮(JRadioButton)

     
JRadioButton组件实现之是一个单选按钮。JRadioButton类可以独自使用,也得以跟ButtonGroup类联合利用,当单独采取时,该单选按钮可以为选定和收回选定;当跟ButtonGroup类联合利用,需要采用add()方法将JRadioButton添加到ButtonGroup中,并做一个单选按钮组。此时用户只能选定按钮组中之一个单选按钮。

      JRadioButton组件的常用方法:

  • setText(String text):设置单选按钮的签文本。
  • setSelected(boolean
    b):设置单选按钮的状态,默认情况下非让选中,当设为true时意味着单选按钮被入选。
  • add(AbatractButton b):添加按钮到按钮组中。
  • remove(AbatractButton b):从按钮组中移除按钮。
  • getButtonCount():返回按钮组中寓按钮的个数,返回值为int型。
  • getElements():返回一个Enumeration类型的对象,通过该对象足以遍历按钮组中富含的持有按钮对象。
  • isSelected():返回单选按钮的状态,当设为true时呢当选。
  • setSelected(boolean b):设定单选按钮的状态。

【例】实例功能是选用户所喜欢的市。

 1 package com.sy.swing;
 2 
 3 import java.awt.*;
 4 import java.awt.event.*;
 5 import javax.swing.*;
 6 
 7 public class JRadioButtonTest extends JFrame {
 8 
 9     /**
10      * Launch the application.
11      */
12     public static void main(String[] args) {
13         EventQueue.invokeLater(new Runnable() {
14             public void run() {
15                 try {
16                     JRadioButtonTest frame = new JRadioButtonTest();
17                                                          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
18                     frame.setBounds(100, 100, 450, 300);
19                     frame.setTitle("单选框示例");
20                     frame.setVisible(true);
21                 } catch (Exception e) {
22                     e.printStackTrace();
23                 }
24             }
25         });
26     }
27 
28     /**
29      * Create the frame.
30      */
31     public JRadioButtonTest() {
32         Container contentPane = getContentPane(); //创建一个内容面板容器
33         contentPane.setLayout(new FlowLayout()); //设置该窗口的布局
34         JPanel p1 = new JPanel(); //创建一个面板对象p1
35         p1.setLayout(new GridLayout(1, 3)); //设置布局管理器的格式
36         p1.setBorder(BorderFactory.createTitledBorder("选择你喜欢的城市"));
37         //定义3个JRadioButton单选按钮
38         JRadioButton r1 = new JRadioButton("北京");
39         JRadioButton r2 = new JRadioButton("上海");
40         JRadioButton r3 = new JRadioButton("青岛");
41         p1.add(r1);
42         p1.add(r2);
43         p1.add(r3);
44         r1.setSelected(true); //设置"北京"单选按钮的状态为被选中
45         contentPane.add(p1); // 面板对象p1加到窗口内容面板容器中
46         pack();
47         addWindowListener(new WindowAdapter() {
48             public void windowClosing(WindowEvent e){
49                 System.exit(0);
50             }
51         });
52     }
53 }

  代码运行结果如下

澳门美高梅手机网站 2

     
程序运行结果如图所示。程序首先创建JFrame窗口对象,内容版面(contentPane),并安装窗口的布局格式为流布局FlowLayout();之后定义3独JRadioButton对象,并安装各自的具体文本同事补充加到面板对象p1中;然后也窗口设置事件监听。

7月东京的气象有点飘忽不定,虽说绝对温度远不如今年同期都上海底热度,可是每当骄阳下行路,皮肤还是会有火辣辣的灼痛感。待在家里也是又闷又粗俗,打开电视机为是一点一滴都任不知情的消息和夸张的综艺。依稀记得在已经于紧邻经过图书馆,于是就凭着记忆找去了。

3.复选框(JCheckBox)

  使用复选框可以做到差不多起选。Swing中的复选框与awt中的复选框相比,优点是Swing复选框中好添加图片。复选框可以为各级一样次的单击操作添加一个事件。

  复选框的构造方法如下。

  • JCheckBox(Icon icon):创建一个发生图标,但未为入选的复选框。
  • JCheckBox(Icon icon,boolean
    selected):创建一个生出图标复选框,并且制定是否让入选。
  • JCheckBox(String text):创建一个起文件,但切莫为入选的复选框。
  • JCheckBox(String text,boolean
    selected):创建一个来文本复选框,并且制定是否为选中。
  • JCheckBox(String text,Icon
    icon):创建一个指定文本及图标,但切莫为入选的复选框。
  • JCheckBox(String text,Icon icon,boolean
    selected):创建一个点名文本及图标,并且制定是否给选中的复选框。

  常用方法:

  • public boolean isSelected():返回复选框状态,true时为当选。
  • public void setSelected(boolean b):设定复选框状态。

  代码实例:

 1 package jFrameDemo;
 2 
 3 import java.applet.*;
 4 import java.awt.*;
 5 import java.awt.event.*;
 6 
 7 @SuppressWarnings("all")
 8 public class CheckboxDemo extends Applet implements ItemListener {
 9     String msg = "";
10     Checkbox windows,android,solaris,mac;
11     
12     public void init() {
13         windows = new Checkbox("Windows",null,true);
14         android = new Checkbox("Android");
15         solaris = new Checkbox("Solaris");
16         mac = new Checkbox("Mac");
17         
18         add(windows);
19         add(android);
20         add(solaris);
21         add(mac);
22         
23         windows.addItemListener(this);
24         android.addItemListener(this);
25         solaris.addItemListener(this);
26         mac.addItemListener(this);
27     }
28     
29     public void itemStateChanged(ItemEvent ie){
30         repaint();
31     }
32     
33     public void paint(Graphics g){
34         msg = "Current state:";
35         g.drawString(msg, 6, 80);
36         msg = "Windows: " + windows.getState();
37         g.drawString(msg, 6, 100);
38         msg = "Android: " + android.getState();
39         g.drawString(msg, 6, 120);
40         msg = "Solaris: " + solaris.getState();
41         g.drawString(msg, 6, 140);
42         msg = "Mac OS: " + mac.getState();
43         g.drawString(msg, 6, 160);
44     }
45 }

代码运行展示如下:

澳门美高梅手机网站 3

相思去图书馆,一个凡是由于知识分子(勉强算吧)对“读书”的那么一点点热心肠,另一个原因是:图书馆当出读书室或者书桌什么的吧,这样好依附空调了……于是,怀着暗搓搓地心态,抵达了三田图书馆。我看在这栋外形有点发陈旧的盘,没多想,便径直走进来了。

 4.组合框(JComboBox)

  JComboBox组件用来创造组合框对象。通常,根据组合框是否只是编制的状态,可以用构成框分成稀种普遍的外观。可编制状态外观可即文本框和生拉列表的做,不可编辑状态的外观可视为按钮和生拉列表的结。在按钮或文本框的右有一个带动三角符号的下拉按钮,用户可以单击该下拉按钮,便可起一个内容列表,这为是组合框的得名。组合框通常用于打列表的”多个档次受到挑选一个”的操作。

  JComboBox的构造方法有如下几栽:

  • JComboBox():创建一个默认模型的组合框。
  • JComboBox(ComboBoxModel aModel):创建一个指定模型的组合框。

  JComboBox(Object[] items):创建一个负有数组定义列表内容之组合框。

  实例代码如下

 1 package JFrameTest;
 2 
 3 import java.awt.BorderLayout;
 4 
 5 @SuppressWarnings("all")
 6 public class ComboBoxFrame extends JFrame {
 7 
 8     private JComboBox faceCombo;
 9     private JLabel label;
10     private static final int DEFAULT_SIZE = 24;
11 
12     /**
13      * Launch the application.
14      */
15     public static void main(String[] args) {
16         EventQueue.invokeLater(new Runnable() {
17             public void run() {
18                 try {
19                     ComboBoxFrame frame = new ComboBoxFrame();
20                     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
21                     frame.setBounds(100, 100, 450, 300);
22                     frame.setVisible(true);
23                 } catch (Exception e) {
24                     e.printStackTrace();
25                 }
26             }
27         });
28     }
29 
30     /**
31      * Create the frame.
32      */
33     public ComboBoxFrame() {
34         label = new JLabel("The quick brown fox jumps over the lazy dog.");
35         label.setFont(new Font("Serif",Font.PLAIN,DEFAULT_SIZE));
36         add(label,BorderLayout.CENTER);
37         
38         faceCombo = new JComboBox();
39         faceCombo.addItem("Serif");
40         faceCombo.addItem("SnsSerif");
41         faceCombo.addItem("Monospaced");
42         faceCombo.addItem("Dialog");
43         faceCombo.addItem("DialogInput");
44         
45         faceCombo.addActionListener(new ActionListener() {
46             
47             @Override
48             public void actionPerformed(ActionEvent e) {
49                 // TODO Auto-generated method stub
50                 label.setFont(new Font((String) faceCombo.getItemAt(faceCombo.getSelectedIndex()),Font.PLAIN,DEFAULT_SIZE));
51             }
52         });
53         
54         JPanel comboJPanel = new JPanel();
55         comboJPanel.add(faceCombo);
56         add(comboJPanel,BorderLayout.SOUTH);
57         pack();
58     }
59 
60 }

  代码运行结果要图

澳门美高梅手机网站 4

澳门美高梅手机网站 5

5.列表(JList)

  JList组件用于定义列表,允许用户挑选一个还是多单项目。与JTextArea类似,JList本身不支持滚动效应,如果如来得过显示范围之类型,可以将JList对象放置到滚动窗格JScrollPane对象中,变可以吧列表对象实现滚动操作。

  JList的构造方法如下:

  • JList():创建一个空模型的列表。
  • JList(ListModel dataModel):创建同愕指定模型的列表。
  • JList(Object[] listdatas):创建一个具有数组指定项目内容的列表。

  常用方法如下:

  • int getFirstVisibleIndex():获取第一独可见单元的目。
  • void setFirstVisibleIndex(int):设置第一单可见单元的目。
  • int getLastVisibleIndex():获取最后一个可见单元的目。
  • void setLastVisibleIndex(int):设置最后一个可见单元的目。
  • int getSelectedIndex():获取第一独既选的目。
  • void setSelectedIndex(int):设置第一单已经选择的目录。
  • Object getSelectedValue():获取第一独已选的靶子。
  • void setSelectedValue(Object):设置第一单既选择的目标。
  • Object[] getSelectedValues():获取已摘取的保有目标。
  • Color getSelectionBackground():获取选中项目之背景色。
  • void setSelectionBackground():设置选中项目之背景色。
  • Color getSelectionForeground():获取选中项目的前景色。
  • void setSelectionForeground():设置选中项目之前景色。

图来源网络

6.文本框(JTextField和JPasswordField)

  JTextField组件用于创造文本框。文本框是因此来接受用户的单行文本信息输入的区域。通常文本框用于收纳用户信息还是任何文件信息之输入。当用户输入文本信息后,如果为JTextField对象上加了事件处理,按掉车键后即便会见接触一定的操作。

  JPasswordField是JTextField的子类,是同等栽新鲜的文本框,也是用来接过单行文本信息输入的区域,但是会因此掉显字符串代替输入的文书信息。因此,JPasswordField组件为叫做密码文本框。JPasswordField默认的是转显字符是”*”,用户可以自行设置回显字符。

  JTextField的宽广构造方法有如下几栽:

  • JTextField():创建一个空文本框。
  • JTextField(String text):创建一个怀有出事文本信息text的文本框。
  • JTextField(String text,int
    columns):创建一个有着出事文本信息text以及制定列数的文本框。

  JTextField的常用方法:

  • void setText(String):设置显示内容。
  • String getText():获取显示内容。

  JPasswordField的构造方法有如下几种植:

  • JPasswordField():创建一个拖欠的密码文本框。
  • JPasswordField(String text):创建一个点名初始文本信息之密码文本框。
  • JPasswordField(String text,int
    columns):创建一个点名文本和列数的密码文本框。
  • JPasswordField(int columns):创建一个点名列数的密码文本框。

  JPasswordField是JTextField的子类,因此JPasswordField也富有跟JTextField类似的称号与功效的点子,此外,它还存有与JTextField类似的称谓以及效力的法门,此外,它还拥有友好的特种艺术:

  • boolean echoCharIsSet():获取设置回显字符的状态。
  • void setEchoChar(char):设置回显字符。
  • void getEchoChar():获取回显字符。
  • char[] getPassword():获取组件的文本。

代码实例如下

 1 package dataExchange;
 2 
 3 import java.awt.BorderLayout;
 4 import java.awt.EventQueue;
 5 import java.awt.event.ActionEvent;
 6 import java.awt.event.ActionListener;
 7 
 8 import javax.swing.JFrame;
 9 import javax.swing.JMenu;
10 import javax.swing.JMenuBar;
11 import javax.swing.JMenuItem;
12 import javax.swing.JScrollPane;
13 import javax.swing.JTextArea;
14 
15 @SuppressWarnings("all")
16 public class DataExchangeFrame extends JFrame {
17     
18     public static final int TEXT_ROWS = 20;
19     public static final int TEXT_COLUMNS = 40;
20     private PasswordChooser dialog = null;
21     private JTextArea textArea;
22     
23     /**
24      * Launch the application.
25      */
26     public static void main(String[] args) {
27         EventQueue.invokeLater(new Runnable() {
28             public void run() {
29                 try {
30                     DataExchangeFrame frame = new DataExchangeFrame();
31                     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
32                     frame.setBounds(100, 100, 450, 300);
33                     frame.setVisible(true);
34                 } catch (Exception e) {
35                     e.printStackTrace();
36                 }
37             }
38         });
39     }
40 
41     /**
42      * Create the frame.
43      */
44     public DataExchangeFrame() {
45         JMenuBar mbar = new JMenuBar();
46         setJMenuBar(mbar);
47         JMenu fileMenu = new JMenu("File");
48         mbar.add(fileMenu);
49         
50         JMenuItem connectItem = new JMenuItem("Connect");
51         connectItem.addActionListener(new ConnectAction());
52         fileMenu.add(connectItem);
53         
54         JMenuItem exitItem = new JMenuItem("Exit");
55         exitItem.addActionListener(new ActionListener() {
56             public void actionPerformed(ActionEvent e) {
57                 System.exit(0);
58             }
59         });
60         
61         fileMenu.add(exitItem);
62         
63         textArea = new JTextArea(TEXT_ROWS,TEXT_COLUMNS);
64         add(new JScrollPane(textArea),BorderLayout.CENTER);
65         pack();
66     }
67     
68     public class ConnectAction implements ActionListener{
69         public void actionPerformed(ActionEvent e) {
70             if (dialog == null) {
71                 dialog = new PasswordChooser();
72             }
73             
74             dialog.setUser(new User("yourname", null));
75             
76             if (dialog.showDialog(DataExchangeFrame.this, "Connect")) {
77                 User user = dialog.getUser();
78                 textArea.append("Username = " + user.getName() + ",password = " + (new String(user.getPassword())) + "\n");
79             }
80         }
81     }
82 
83 }

  运行如下

 澳门美高梅手机网站 6

  点击file,选择connect,效果如下:

澳门美高梅手机网站 7

上面运行代码如下:

 1 package dataExchange;
 2 
 3 import java.awt.BorderLayout;
 4 
 5 @SuppressWarnings("serial")
 6 public class PasswordChooser extends JPanel {
 7 
 8     private JTextField username;
 9     private JPasswordField password;
10     private JButton okButton;
11     private boolean ok;
12     private JDialog dialog;
13     
14     /**
15      * Create the panel.
16      */
17     public PasswordChooser() {
18         setLayout(new BorderLayout());
19         JPanel panel = new JPanel();
20         panel.setLayout(new GridLayout(2, 2));
21         panel.add(new JLabel("Username:"));
22         panel.add(username = new JTextField());
23         panel.add(new JLabel("Password:"));
24         panel.add(password = new JPasswordField());
25         add(panel,BorderLayout.CENTER);
26         
27         okButton = new JButton("Ok");
28         okButton.addActionListener(new ActionListener() {
29             public void actionPerformed(ActionEvent e) {
30                 ok = true;
31                 dialog.setVisible(true);
32             }
33         });
34         
35         JButton cancelButton = new JButton("Cancel");
36         cancelButton.addActionListener(new ActionListener() {
37             public void actionPerformed(ActionEvent e) {
38                 dialog.setVisible(false);
39             }
40         });
41         
42         JPanel buttonPanel = new JPanel();
43         buttonPanel.add(okButton);
44         buttonPanel.add(cancelButton);
45         add(buttonPanel,BorderLayout.SOUTH);
46     }
47     
48     public void setUser(User u){
49         username.setText(u.getName());
50     }
51     
52     public User getUser(){
53         return new User(username.getText(),password.getPassword());
54     }
55     
56     public boolean showDialog(Component parent,String title){
57         ok = false;
58         Frame owner = null;
59         if (parent instanceof Frame) {
60             owner = (Frame)parent;
61         }else {
62             owner = (Frame)SwingUtilities.getAncestorOfClass(Frame.class, parent);
63         }
64         
65         if (dialog == null || dialog.getOwner() != owner) {
66             dialog = new JDialog(owner,true);
67             dialog.add(this);
68             dialog.getRootPane().setDefaultButton(okButton);
69             dialog.pack();
70         }
71         
72         dialog.setTitle(title);
73         dialog.setVisible(true);
74         return ok;
75     }
76 
77 }   

工作台有一定量叫作工作人员,我上的时刻来好几单人口于放贷书。等工作人员办理终止后,我就倒过去打探办理图书卡的事体了。程序非常粗略,填写好一个为主信息表,出示证明您于港区工作还是存的材料,工作人员审核后,便制卡发放。给我轧的时候,工作人员很热情地告知我,这张卡适用于港区所有的图书馆及图书室,可以借书、CD、DVD等。后面我以工作人员给我的英文介绍单上还看,这张卡还是支持通过三狩猎图书馆从temple
university(Japan campus)借书……

7.面板(JPanel)

  JPanel组件定义面板实际上是一律种植容器组件,用来包容各种其他轻量级组件。此外,用户还足以就此这种面板容器绘制图形。

  JPanel的构造方法如下:

  • JPanel():创建有双缓冲和流布局(FlowLayout)的面板。
  • JPanel(LayoutManager layout):创建有制定布局管理器的面板。

  JPanel的 常用艺术:

  • void add(Component):添加组件。
  • void add(Component,int):添加组件至索引指定位置。
  • void add(Component,Object):按照指定布局限制添加组件。
  • void
    add(Component,Object,int):按照指定布局管理器限制添加组件到指定位置。
  • void remove(Component):移除组件。
  • void remove(int):移除指定位置的零部件。
  • void removeAll():移除所有组件。
  • void paintComponent(Graphics):绘制组件。
  • void repaint():重新绘制。
  • void setPreferredSize(Dimension):设置组件尺寸。
  • Dimension getPreferredSize():获取最佳尺寸。

  代码实例如下:

 1 package com.sy.swing;
 2 
 3 import java.awt.BorderLayout;
 4 import java.awt.Color;
 5 import java.awt.Container;
 6 import java.awt.Dimension;
 7 import java.awt.FlowLayout;
 8 import java.awt.Graphics;
 9 
10 import javax.swing.JButton;
11 import javax.swing.JFrame;
12 import javax.swing.JPanel;
13 
14 public class JPanelExample extends JFrame {
15     JButton[] buttons;
16     JPanel panel1;
17     CustomPanel panel2;
18     
19     public JPanelExample(){
20         super("面板实例");
21         Container container = getContentPane();
22         container.setLayout(new BorderLayout());
23         panel1 = new JPanel(new FlowLayout()); //创建一个流布局管理器的面板
24         buttons = new JButton[4];
25         for (int i = 0; i < buttons.length; i++) {
26             buttons[i]=new JButton("按钮"+(i+1));
27             panel1.add(buttons[i]); //添加按钮到面板panel1中
28         }
29         panel2 = new CustomPanel();
30         container.add(panel1,BorderLayout.NORTH);
31         container.add(panel2,BorderLayout.CENTER);
32         pack();
33         setVisible(true);
34     }
35     
36     public static void main(String[] args) {
37         JPanelExample jpe = new JPanelExample();
38         jpe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
39     }
40     
41     class CustomPanel extends JPanel{ //定义内部类CustomPanel
42         @Override
43         protected void paintComponent(Graphics g) {
44             super.paintComponent(g);
45             g.drawString("Welcome to Java Shape World", 20, 20);
46             g.drawRect(20, 40, 130, 130);
47             g.setColor(Color.GREEN);  //设置颜色为绿色
48             g.fillRect(20, 40, 130, 130); //绘制矩形
49             g.drawOval(160, 40, 100, 100); //绘制椭圆
50             g.setColor(Color.ORANGE); //设置颜色为橙色
51             g.fillOval(160, 40, 100, 100); //绘制椭圆
52         }
53         @Override
54         public Dimension getPreferredSize() {
55             // TODO Auto-generated method stub
56             return new Dimension(200,200);
57         }
58     }
59 
60 }

  运行结果澳门美高梅手机网站如下:

澳门美高梅手机网站 8

图书馆共四重叠,一重叠二叠都是书、CD和DVD,三层是读书室和活动室,四重合是三田的一个民俗资料馆。作为一个街区图书馆,这里书籍不算是少了,让自家出乎意料的凡,居然有多中华古代文学、诗词方面的开:唐诗宋词自不必说,还有好多诗人词人的传、大部头的季书五通过跟各项史书。然而,由于都是日文,我啊看无明了,不免有一点点扫兴。CD和VCD主要是乐与影片啦~楼上楼下转悠了转,忽然发现,原来不用图书卡也堪以图书馆里看开看报看杂志、自习,图书卡只担负“借书”。这或多或少,还挺让丁感慨万端的。毕竟我们国内的社区图书馆,似乎未见面起这般坐开放的千姿百态,市民等也无法这样方便轻松地有一个读和读书之公共场所。

8.表格(JTable)

  表格是Swing新加的组件,主要功能是拿数量因二维表格的形式显得出。使用表格,一句子M-V-C思想,最好先生化作一个MyTableModel类型的对象来表示数据,这个看似是于AbstractTableModel累中融为一体来的,其中起几乎单法子移动如果更写,例如geColumnCount、getRowCount、getColumnName和getValueAt。因为JTable会从之目标中自行取表格显示得的数额,AbstractTableModel类的对象承担表格大小的确定(行、列)、内容的填充、赋值、表格单元更新的检测等一体和表哥内容关于的性能及其操作。JTable类生成的靶子为该TableModel为参数,并负担用TableModel对象吃的数目因表的形式展示出来。

澳门美高梅手机网站 9澳门美高梅手机网站 10

  1 package JFrameTest;
  2 
  3 /*
  4  * TableRenderDemo.java requires no other files.
  5  */
  6 
  7 import javax.swing.DefaultCellEditor;
  8 import javax.swing.JComboBox;
  9 import javax.swing.JFrame;
 10 import javax.swing.JPanel;
 11 import javax.swing.JScrollPane;
 12 import javax.swing.JTable;
 13 import javax.swing.table.AbstractTableModel;
 14 import javax.swing.table.DefaultTableCellRenderer;
 15 import javax.swing.table.TableCellRenderer;
 16 import javax.swing.table.TableColumn;
 17 
 18 import java.awt.Component;
 19 import java.awt.Dimension;
 20 import java.awt.GridLayout;
 21 
 22 /** 
 23  * TableRenderDemo is just like TableDemo, except that it
 24  * explicitly initializes column sizes and it uses a combo box
 25  * as an editor for the Sport column.
 26  */
 27 @SuppressWarnings("all")
 28 public class TableRenderDemo extends JPanel {
 29     private boolean DEBUG = false;
 30 
 31     public TableRenderDemo() {
 32         super(new GridLayout(1,0));
 33 
 34         JTable table = new JTable(new MyTableModel());
 35         table.setPreferredScrollableViewportSize(new Dimension(500, 70));
 36         table.setFillsViewportHeight(true);
 37 
 38         //Create the scroll pane and add the table to it.
 39         JScrollPane scrollPane = new JScrollPane(table);
 40 
 41         //Set up column sizes.
 42         initColumnSizes(table);
 43 
 44         //Fiddle with the Sport column's cell editors/renderers.
 45         setUpSportColumn(table, table.getColumnModel().getColumn(2));
 46 
 47         //Add the scroll pane to this panel.
 48         add(scrollPane);
 49     }
 50 
 51     /*
 52      * This method picks good column sizes.
 53      * If all column heads are wider than the column's cells'
 54      * contents, then you can just use column.sizeWidthToFit().
 55      */
 56     private void initColumnSizes(JTable table) {
 57         MyTableModel model = (MyTableModel)table.getModel();
 58         TableColumn column = null;
 59         Component comp = null;
 60         int headerWidth = 0;
 61         int cellWidth = 0;
 62         Object[] longValues = model.longValues;
 63         TableCellRenderer headerRenderer =
 64             table.getTableHeader().getDefaultRenderer();
 65 
 66         for (int i = 0; i < 5; i++) {
 67             column = table.getColumnModel().getColumn(i);
 68 
 69             comp = headerRenderer.getTableCellRendererComponent(
 70                                  null, column.getHeaderValue(),
 71                                  false, false, 0, 0);
 72             headerWidth = comp.getPreferredSize().width;
 73 
 74             comp = table.getDefaultRenderer(model.getColumnClass(i)).
 75                              getTableCellRendererComponent(
 76                                  table, longValues[i],
 77                                  false, false, 0, i);
 78             cellWidth = comp.getPreferredSize().width;
 79 
 80             if (DEBUG) {
 81                 System.out.println("Initializing width of column "
 82                                    + i + ". "
 83                                    + "headerWidth = " + headerWidth
 84                                    + "; cellWidth = " + cellWidth);
 85             }
 86 
 87             column.setPreferredWidth(Math.max(headerWidth, cellWidth));
 88         }
 89     }
 90 
 91     public void setUpSportColumn(JTable table,
 92                                  TableColumn sportColumn) {
 93         //Set up the editor for the sport cells.
 94         JComboBox comboBox = new JComboBox();
 95         comboBox.addItem("Snowboarding");
 96         comboBox.addItem("Rowing");
 97         comboBox.addItem("Knitting");
 98         comboBox.addItem("Speed reading");
 99         comboBox.addItem("Pool");
100         comboBox.addItem("None of the above");
101         sportColumn.setCellEditor(new DefaultCellEditor(comboBox));
102 
103         //Set up tool tips for the sport cells.
104         DefaultTableCellRenderer renderer =
105                 new DefaultTableCellRenderer();
106         renderer.setToolTipText("Click for combo box");
107         sportColumn.setCellRenderer(renderer);
108     }
109 
110     class MyTableModel extends AbstractTableModel {
111         private String[] columnNames = {"First Name",
112                                         "Last Name",
113                                         "Sport",
114                                         "# of Years",
115                                         "Vegetarian"};
116         private Object[][] data = {
117         {"Kathy", "Smith",
118          "Snowboarding", new Integer(5), new Boolean(false)},
119         {"John", "Doe",
120          "Rowing", new Integer(3), new Boolean(true)},
121         {"Sue", "Black",
122          "Knitting", new Integer(2), new Boolean(false)},
123         {"Jane", "White",
124          "Speed reading", new Integer(20), new Boolean(true)},
125         {"Joe", "Brown",
126          "Pool", new Integer(10), new Boolean(false)}
127         };
128 
129         public final Object[] longValues = {"Jane", "Kathy",
130                                             "None of the above",
131                                             new Integer(20), Boolean.TRUE};
132 
133         public int getColumnCount() {
134             return columnNames.length;
135         }
136 
137         public int getRowCount() {
138             return data.length;
139         }
140 
141         public String getColumnName(int col) {
142             return columnNames[col];
143         }
144 
145         public Object getValueAt(int row, int col) {
146             return data[row][col];
147         }
148 
149         /*
150          * JTable uses this method to determine the default renderer/
151          * editor for each cell.  If we didn't implement this method,
152          * then the last column would contain text ("true"/"false"),
153          * rather than a check box.
154          */
155         public Class getColumnClass(int c) {
156             return getValueAt(0, c).getClass();
157         }
158 
159         /*
160          * Don't need to implement this method unless your table's
161          * editable.
162          */
163         public boolean isCellEditable(int row, int col) {
164             //Note that the data/cell address is constant,
165             //no matter where the cell appears onscreen.
166             if (col < 2) {
167                 return false;
168             } else {
169                 return true;
170             }
171         }
172 
173         /*
174          * Don't need to implement this method unless your table's
175          * data can change.
176          */
177         public void setValueAt(Object value, int row, int col) {
178             if (DEBUG) {
179                 System.out.println("Setting value at " + row + "," + col
180                                    + " to " + value
181                                    + " (an instance of "
182                                    + value.getClass() + ")");
183             }
184 
185             data[row][col] = value;
186             fireTableCellUpdated(row, col);
187 
188             if (DEBUG) {
189                 System.out.println("New value of data:");
190                 printDebugData();
191             }
192         }
193 
194         private void printDebugData() {
195             int numRows = getRowCount();
196             int numCols = getColumnCount();
197 
198             for (int i=0; i < numRows; i++) {
199                 System.out.print("    row " + i + ":");
200                 for (int j=0; j < numCols; j++) {
201                     System.out.print("  " + data[i][j]);
202                 }
203                 System.out.println();
204             }
205             System.out.println("--------------------------");
206         }
207     }
208 
209     /**
210      * Create the GUI and show it.  For thread safety,
211      * this method should be invoked from the
212      * event-dispatching thread.
213      */
214     private static void createAndShowGUI() {
215         //Create and set up the window.
216         JFrame frame = new JFrame("TableRenderDemo");
217         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
218 
219         //Create and set up the content pane.
220         TableRenderDemo newContentPane = new TableRenderDemo();
221         newContentPane.setOpaque(true); //content panes must be opaque
222         frame.setContentPane(newContentPane);
223 
224         //Display the window.
225         frame.pack();
226         frame.setVisible(true);
227     }
228 
229     public static void main(String[] args) {
230         //Schedule a job for the event-dispatching thread:
231         //creating and showing this application's GUI.
232         javax.swing.SwingUtilities.invokeLater(new Runnable() {
233             public void run() {
234                 createAndShowGUI();
235             }
236         });
237     }
238 }

TableRenderDemo

代码运行结果如下:

澳门美高梅手机网站 11

参考:http://www.cnblogs.com/pzy4447/p/4925125.html

可是,转念再同想,国内各项公共服务事业呢是在不停升华,广州市之图书馆不为叫自家震惊艳了挺遥远嘛,更何况,国内的互联网共享服务,日本但了没有的。

9.框架(JFrame)

  框架SwingGUI应用程序的主窗口,窗口包括边界、标题、关闭按钮等。

  JFrame类是java.awt包中Frame类的子类,其子类创建的靶子是窗体,对象(窗体)是重容器。不能够把组件直接助长到Swing窗体中,其含有内容面板容器,应该拿组件添加至内容面板中;不能够也Swing窗体设置布局,而当Swing窗体的情节面板设置布局。

  Swing窗体通过getContentPane()方法赢得JFrame的始末面板,再指向那个参加组件;

  JFrame frame = new JFrame();

  Container ct = frame.getContentPane(); //获取内容面板容器

  Ct.add(childComponent);  //降内容面板容器在组件

  框架(JFrame)常用的法子与波:

  • frame.setVisibel(true):显示框架对象表示的框架窗口。
  • frame.setSize(200,100)或frame.pack():设置框架的初步显示大小。
  • frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE):当用户单机框架的关门按钮则脱离程序,或者补充加WindowListener监听器实现关闭按钮退出程序。

  代码实例:

 

 1 package jFrameDemo;
 2 
 3 import java.awt.EventQueue;
 4 
 5 import javax.swing.JFrame;
 6 
 7 public class SimpleFrameTest {
 8     public static void main(String[] args) {
 9         /*所有的Swing组件必须由事件分派线程(event dispatch thread)进行配置,
10          *线程将鼠标点击和按钮控制转移到用户接口组件。下面的代码片段是事件分派线程中的执行代码。
11          *现在,只需要将其看成是启动一个Swing程序的神器代码。
12          */
13         EventQueue.invokeLater(new Runnable(){
14             @Override
15             public void run() {
16                 // TODO Auto-generated method stub
17                 SimpleFrame frame = new SimpleFrame();
18                 frame.setTitle("JFrame测试");
19                 //定义一个用户关闭这个框架时的响应动作。
20                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
21                 //为了框架显示,main方法需要需要调用框架的setVisible方法
22                 frame.setVisible(true);
23             }
24         });
25     }
26 }
27 
28 @SuppressWarnings("all")
29 class SimpleFrame extends JFrame{
30     private static final int DEFAULT_WIDTH = 400;
31     private static final int DEFAULT_HEIGHT = 200;
32     
33     public SimpleFrame(){
34         setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
35     }
36 }

  代码实例运行结果如下:

澳门美高梅手机网站 12

 

 文章内容参考:《Java游戏编程原理和执行课》

赶快生图书馆时,决定借几依照旅游观光的开,忽然发现书架旁的电动借书机。选择了英文使用界面,学习应用办法:把要借的书放在借书机的晶莹平板上,机器自动读取,借出者刷一下卡便OK了。整个借书过程也便10秒吧,可以视为非常便利了。

澳门美高梅手机网站 13

图书馆的机动借书机

东京底公共设施的便利度实在是最胜了,从图书馆的自发性借书机,到机关刻章机、自动贩卖机、自动点单机……一切还老轻便,或者说若您免情愿同丁打交道,日常生活中的闲事完全好“自助”完成。或许为日本总人口对于“便利”的实践着,共享经济以日本一点一滴无像国内那般如火如荼吧,亦或者说,毫无起色。

发表评论

电子邮件地址不会被公开。 必填项已用*标注