十二周课程总结
实验报告
1-1)实验代码
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPasswordField; import javax.swing.JTextField; public class My implements ActionListener{ JFrame f; JButton b1,b2; JLabel l1,l2,l3; JTextField t; JPasswordField p; public My(){ f = new JFrame("登陆窗口"); b1 = new JButton("登陆"); b2 = new JButton("重置"); l1 = new JLabel("用户名"); l2 = new JLabel("密 码"); l3 = new JLabel("用户登陆系统"); t = new JTextField(); p = new JPasswordField(); b1.addActionListener(this); b2.addActionListener(this); f.setLayout(null); l1.setBounds(10, 10, 40, 30); l2.setBounds(10, 60, 40, 30); t.setBounds(80, 10, 150, 30); p.setBounds(80, 50, 150, 30); b1.setBounds(80, 100, 80, 30); b2.setBounds(200, 100, 80, 30); l3.setBounds(50, 160, 200, 30); f.add(b1); f.add(b2); f.add(l1); f.add(l2); f.add(l3); f.add(t); f.add(p); f.setSize(400, 300); f.setVisible(true); } public void actionPerformed(ActionEvent a) { if(a.getSource()==b1){ String s1 = t.getText(); String s2 = new String(p.getPassword()); if(s1.equals("wangdashuai") && s2.equals("10086")){ l3.setText("登录成功,欢迎光临!"); } else{ l3.setText("登录失败,用户名或密码错误!"); } } if(a.getSource()==b2){ t.setText(""); //清空文本框内容 p.setText(""); //清空密码框内容 l3.setText("用户登录系统!"); } } }
1-2)实验代码
import java.awt.GridLayout; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JFrame; public class text { public static void main(String[] args){ new My(); } }
2)运行结果截图
总结:这一次的题目老师上课已经讲过一遍了,但是还是有很多细节问题要自己处理。
学习总结
1、其他容器
1)JPanel容器
- 使用Jpanel可以完成各种复杂的界面显示。
- 在JPanel中可以加入任意的组件,之后直接将Jpanel容器加入到JFrame容器中即可显示。
-
可以将多个组件加入到JPanel中实现复杂的排列。
- 使用JPanel并结合LayoutManager可以方便地管理组件。
- 使用LayoutManager对多个Jpanel进行排列,而每个JPanel中也可以分别使用不同的LayoutManager管理组件,完成对组件进行复杂的排列。
2)JSplitPane容器
- JSplitPane主要功能是分割面板,可以将一个窗体分为两个子窗体,可以是水平排列也可以是垂直排列 JSplitPane类的主要方法和常量
3)JTabbedPane容器
- JTabbedPane是在一个面板上设置多个选项卡供用户选择
- 如果用户需要查看相关方面信息,直接点开选项卡即可浏览,通过这种方式可以方便的管理相关信息。 JTabbedPane常用方法和常量
3)JScrollPane容器
- 在一般的图形界面中如果显示的区域不够大,就会出现滚动条以方便用户浏览。
- 在Swing中JSCrollPane为显示的内容加入滚动条。
4)JScrollPane容器
JScrollPane主要由JViewPort和JScrollBar两部分组成。
- JViewPort:显示一个矩形的区域让用户浏览
- JScrollBar:形成水平或垂直的滚动条。
JScrollPane常用方法和常量
5)JDesktopPane与JInternalFrame容器
- 在Swing中也可以完成内部窗体的显示,在一个窗体中可以显示多个子窗体,每一个子窗体都无法超出父窗体的区域。
- JDesktopPane规定了一个父窗口的基本形式。
- JInternalFrame规定了各个子窗体,JInternalFrame需要加入到JDesktopPane之中
JDesktopPane常用方法
JInternalFrame常用方法
2、文本组件:JTextComponent
各软件系统中都存在文本输入框,以方便用户输入数据,在Swing中提供了几类文本输入框:
- 单行文本输入框:JTextField
- 密码文本输入框:JPasswordField
- 多行文本输入框:JTextArea
JTextComponent的常用方法
1)单行文本输入框:JTextField
- JTextField组件可以实现单行文本输入,此类除了使用JTextComponet类的方法外,还可以使用以下的方法
2)密文输入组件:JPasswordField
- JText是使用明文方式进行数据显示的。
- 如果现在需要将显示的内容设置成其他字符,则可以使用JPasswordField类,常用方法如下:
3)多行文本输入组件:JTextArea
- 如果要想输入多行文本,则可以使用JTextArea实现多行文本的输入,此类扩展了JTextComponent类
3、事件处理
1)事件和监听器
- 要想让组件发挥作用,必须对所有的组件进行事件处理。
- Java中使用事件表示一个对象的状态发生变化。例如当按钮按下时,实际上按钮的状态发生了变化,此时就会产生一个事件,如果要想处理此事件,就需要事件的监听者能不断的监听事件的变化,并根据这些事件进行相应的处理。
- 在Swing编程中,所有的事件类都是EventObject类的子类
2)Java事件处理流程
- 事件源:发生此事件的源对象。
- 事件监听器:事件的接收对象。
- 如果没有能够接收和处理事件的对象,图形界面程序所生成的一切事件都是无用的。
- 所有的事件监听器都是以接口的形式出现的,处理时只需要实现此接口。
3)窗体事件
- WindowListener是专门处理窗体的事件监听接口,窗体的所有变化都可以使用这个接口进行监听。
4)动作事件及监听处理
- 一个按钮想要让其变得有意义,就必须使用事件处理,在Swing的事件处理中,可以使用ActionListener接口处理按钮的动作事件。
- ActionListener接口只定义了一个方法。