201871010128-杨丽霞《面向对象程序设计(java)》第十四周学习总结(1分)

项目

内容

这个作业属于哪个课程

https://www.cnblogs.com/nwnu-daizh/

这个作业的要求在哪里

https://www.cnblogs.com/nwnu-daizh/p/11953993.html

作业学习目标

(1)掌握GUI布局管理器用法;

(2)掌握Java Swing文本输入组件用途及常用API;

(3)掌握Java Swing选择输入组件用途及常用API

随笔博文正文内容包括:

第一部分:总结第十二章本周理论知识(25分)

(1)五种布局管理器

一、 FlowLayout(流布局管理):其组件的放置规律是从上到下,从左到右依次进行放置。构造方法有下列几种: 

1. FlowLayout():创建每行组件居中对齐、组件间距为5个像素单位。

2. FlowLayout(int align):创建指定每行的对齐方式、组件间距为5个像素单位。

align取值表示组件的对齐方式:CENTER(居中对齐),LEFT(左对齐),RIGHT(右对齐)

二、 BorderLayout(边框布局管理):将容器分为上、下、左、右、中五个区域,分别对应North(北区),South(南区),West(西区),East(东区)和Center(中区)。用add(component,index)方法向容器中添加组件,其中第二个参数指明组件位置,其取为:BorderLayout.North,BorderLayout.South,BorderLayout.East,BorderLayout.West,BorderLayout.Center。其构造方法有中下几种:1. BorderLayout():创建组件间无间距的布局对象。 2. BorderLayout(int hgap,int vgap):创建指定组件间距的布局对象

三、 GridLayout(网格布局管理器):将容器分成尺寸相同的网格,组件被放在网格的空白处,顺序与流式布局一样。网格中组件大小相同。其构造方法有下列几种

1. GridLayout()以每行一列的方式构建一个GridLayout对象。 

2. GridLayout(int row,int columns):根据指定行数和列数构造一个GridLayout对象,组件间距为0。

3. GridLayout(int row,int columns,int hgap,int,vgap): 根据指定行数和列数构造一个GridLayout对象,组件间距按指定值设置

四、 CardLayout( 卡片布局管理器):它将组件放在一系列卡片上,一次只能看到一张卡片,一张卡片只能放一个组件。使用构造方法CardLayout()可以构建CardLayout对象。

组件按添加顺序存放在卡片序列中,使用下列方法将组件添加到容器中: 

add(Component,component,String name); 

name是卡片中组件的标识。 

为了使组件在使用CardLayout容器中可见,可使用CardLayout对象的下列方法;

1)first(Container container):显示第一张卡片。 

2)   last(Container container):显示最后一张卡片。

3) nextContainer container):显示下一张卡片。 

4) show(Container container,String name):显示容器中指定名称的卡片。

五、GridBagLayout(网格块布局管理器):与GridLayout相似,不同的是GridBagLayout的组件大小可以不同,可以按任意顺序添加。使用较少。

(2)Swing设计模式Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 知晓的,经过分类编目的,代码设计经验的总结。

使用设计模式是为了可重用代码、让代码更容易被 他人理解、保证代码可靠性。

每一个模式描述了一个不断重复发生的设计问题, 以及该问题的核心解决方案

模型-视图-控制器设计模式(Model –ViewController )是Java EE平台下创建Web 应用程序 的重要设计模式

(3)MVC设计模式

MVC设计模式 –Model(模型):是程序中用于处理程序数据逻 辑的部分,通常模型负责在数据库中存取数据。

–View(视图):是程序中处理数据显示的部分, 通常视图依据模型存取的数据创建。

–Controller(控制器):是程序中处理用户交互 的部分。通常控制器负责从视图读取数据,控制 用户输入,并向模型发送数据。

(4)文本输入

文本域(JTextField): 用于获取单行文本输入。

l文本域的使用方法: JPanelpanel = new JPanel();

JTextFieldtextField= new JTextField("Default input", 20);

panel.add(textField); –第一个参数“Default input”:

将文本域的缺省 显示值为Default input –第二个参数20:表示文本域显示宽度为20列。

–若要重新设置列数,可使用setColumns方法。

(5)选择组件

标签是容纳文本的组件。它们没有任何修饰(如没有边界 ),也不响应用户输入。

1.bold = new JCheckBox("Bold"); 复选框自动地带有表示标签。

2. JCheckBox(String label,Icon icon); 构造带有标签与图标的复选框,默认初始未被选择。

3.JCheckBox(String label,boolean state); 用指定的标签和初始化选择状态构造一个复选框

(6)菜单

首先创建一个菜单栏 菜单栏是一个可以添加到容器组件任何位置 的组件。通常放置在框架的顶部。 JMenuBarmenuBar=new JMenuBar();

l调用框架的setJMenuBar方法可将一个菜单栏对 象添加到框架上 frame.setJMenuBar(menuBar);

l创建菜单对象,并将菜单对象添加到菜单栏中 JMenueditMenu=new Jmenu("Edit"); menuBar.add(editMenu);
l向菜单对象添加一个菜单项。l向菜单对象添加一个菜单项。 JMenItempasteItem=new JMenItem(); editMenu.add(pasteItem);

l向菜单对象添加分隔符行。 editMenu.addSeperator(); l向菜单对象项添加子菜单。 JMenuoptionsMenu=new Jmenu(“option”); editMenu.add(optionsMenu)

第二部分:实验部分

实验1:测试程序1(5分)

elipse IDE中运行教材479页程序12-1,结合运行结果理解程序;

掌握布局管理器的用法;

理解GUI界面中事件处理技术的用途。

在布局管理应用代码处添加注释;

  1. package calculator;
  2.  
  3. import javax.swing.*;
  4.  
  5. /**
  6. * A frame with a calculator panel.
  7. */
  8. public class CalculatorFrame extends JFrame
  9. {
  10. public CalculatorFrame()
  11. {
  12. add(new CalculatorPanel());//添加面板
  13. pack();//使用组件首选大小
  14. }
  15. }
  1. package calculator;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import javax.swing.*;
  6.  
  7. /**
  8. * A panel with calculator buttons and a result display.
  9. */
  10. public class CalculatorPanel extends JPanel
  11. {
  12. private JButton display;
  13. private JPanel panel;
  14. private double result;
  15. private String lastCommand;
  16. private boolean start;
  17. private JButton display1;
  18.  
  19. //无参构造器
  20. public CalculatorPanel()
  21. {
  22. setLayout(new BorderLayout());//设置布局为边框布局,边框布局分东南西北中5个方位来添加控件。
  23.  
  24. result = ;
  25. lastCommand = "=";
  26. start = true;
  27.  
  28. // add the display
  29.  
  30. display = new JButton("");//初始数值为0
  31. display.setEnabled(false);//设置 Action 的启用状态
  32. add(display, BorderLayout.NORTH);//添加display,放在北方
  33.  
  34. display1 = new JButton("");
  35. display1.setEnabled(false);//设置 Action 的启用状态
  36. add(display1, BorderLayout.EAST);//添加display,放在东方
  37.  
  38. var insert = new InsertAction();
  39. var command = new CommandAction();
  40.  
  41. // add the buttons in a 4 x 4 grid
  42.  
  43. panel = new JPanel();
  44. //设置窗口布局为网络布局样式
  45. panel.setLayout(new GridLayout(, ));
  46.  
  47. addButton("", insert);
  48. addButton("", insert);
  49. addButton("", insert);
  50. addButton("/", command);
  51.  
  52. addButton("", insert);
  53. addButton("", insert);
  54. addButton("", insert);
  55. addButton("*", command);
  56.  
  57. addButton("", insert);
  58. addButton("", insert);
  59. addButton("", insert);
  60. addButton("-", command);
  61.  
  62. addButton("", insert);
  63. addButton(".", insert);
  64. addButton("=", command);
  65. addButton("+", command);
  66.  
  67. add(panel, BorderLayout.CENTER);//居中方位
  68. }
  69.  
  70. /**
  71. * Adds a button to the center panel.
  72. * @param label the button label
  73. * @param listener the button listener
  74. */
  75. private void addButton(String label, ActionListener listener)
  76. {
  77. var button = new JButton(label);
  78. button.addActionListener(listener);//事件监听器
  79. panel.add(button);
  80. }
  81.  
  82. /**
  83. * This action inserts the button action string to the end of the display text.
  84. */
  85. //内部类
  86. private class InsertAction implements ActionListener
  87. {
  88. //actionPerformed方法接受ActionEvent参数
  89. public void actionPerformed(ActionEvent event)
  90. {
  91. String input = event.getActionCommand();
  92. if (start)
  93. {
  94. display.setText("");
  95. start = false;
  96. }
  97. display.setText(display.getText() + input);
  98. }
  99. }
  100.  
  101. /**
  102. * This action executes the command that the button action string denotes.
  103. */
  104. private class CommandAction implements ActionListener
  105. {
  106. public void actionPerformed(ActionEvent event)
  107. {
  108. String command = event.getActionCommand();
  109.  
  110. if (start)
  111. {
  112. if (command.equals("-"))
  113. {
  114. display.setText(command);
  115. start = false;
  116. }
  117. else lastCommand = command;
  118. }
  119. else
  120. {
  121. calculate(Double.parseDouble(display.getText()));
  122. lastCommand = command;
  123. start = true;
  124. }
  125. }
  126. }
  127.  
  128. /**
  129. * Carries out the pending calculation.
  130. * @param x the value to be accumulated with the prior result.
  131. */
  132. public void calculate(double x)
  133. {
  134. if (lastCommand.equals("+")) result += x;
  135. else if (lastCommand.equals("-")) result -= x;
  136. else if (lastCommand.equals("*")) result *= x;
  137. else if (lastCommand.equals("/")) result /= x;
  138. else if (lastCommand.equals("=")) result = x;
  139. display.setText("" + result);
  140. }
  141. }
  1. package calculator;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. /**
  7. * @version 1.35 2018-04-10
  8. * @author Cay Horstmann
  9. */
  10. public class Calculator
  11. {
  12. public static void main(String[] args)
  13. {
  14. EventQueue.invokeLater(() -> {
  15. var frame = new CalculatorFrame();
  16. frame.setTitle("Calculator");
  17. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置用户在此窗体上发起 "close" 时默认执行的操作
  18. frame.setVisible(true);
  19. });
  20. }
  21. }

运行截图:

实验1:测试程序2(5分)

elipse IDE中调试运行教材486页程序12-2,结合运行结果理解程序;

掌握文本组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

12-2代码:

  1. package text;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. /**
  7. * @version 1.42 2018-04-10
  8. * @author Cay Horstmann
  9. */
  10. public class TextComponentTest
  11. {
  12. public static void main(String[] args)
  13. {
  14. EventQueue.invokeLater(() -> {
  15. var frame = new TextComponentFrame();
  16. frame.setTitle("TextComponentTest");
  17. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18. frame.setVisible(true);
  19. });
  20. }
  21. }
  1. package text;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.GridLayout;
  5.  
  6. import javax.swing.JButton;
  7. import javax.swing.JFrame;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPanel;
  10. import javax.swing.JPasswordField;
  11. import javax.swing.JScrollPane;
  12. import javax.swing.JTextArea;
  13. import javax.swing.JTextField;
  14. import javax.swing.SwingConstants;
  15.  
  16. /**
  17. * A frame with sample text components.
  18. */
  19. public class TextComponentFrame extends JFrame
  20. {
  21. public static final int TEXTAREA_ROWS = ;
  22. public static final int TEXTAREA_COLUMNS = ;
  23.  
  24. public TextComponentFrame()
  25. {
  26. var textField = new JTextField();
  27. var passwordField = new JPasswordField();
  28.  
  29. //在框架北方建立有JTextField,JPasswordField组件的面板
  30. var northPanel = new JPanel();
  31. northPanel.setLayout(new GridLayout(, ));//网格布局
  32. northPanel.add(new JLabel("User name: ", SwingConstants.RIGHT));
  33. northPanel.add(textField);
  34. northPanel.add(new JLabel("Password: ", SwingConstants.RIGHT));
  35. northPanel.add(passwordField);
  36.  
  37. add(northPanel, BorderLayout.NORTH);
  38.  
  39. //在框架中央建立JTextArea组件的滚动窗格
  40. var textArea = new JTextArea(TEXTAREA_ROWS, TEXTAREA_COLUMNS);
  41. var scrollPane = new JScrollPane(textArea);
  42.  
  43. add(scrollPane, BorderLayout.CENTER);
  44.  
  45. // add button to append text into the text area
  46.  
  47. var southPanel = new JPanel();
  48.  
  49. var insertButton = new JButton("Insert");
  50. southPanel.add(insertButton);
  51. //lambda表达式监听动作
  52. insertButton.addActionListener(event ->
  53. textArea.append("User name: " + textField.getText() + " Password: "
  54. + new String(passwordField.getPassword()) + "\n"));
  55.  
  56. add(southPanel, BorderLayout.SOUTH);
  57. pack();
  58. }
  59. }

运行截图:

实验1:测试程序3(5分)

elipse IDE中调试运行教材489页程序12-3,结合运行结果理解程序;

掌握复选框组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

12-3代码:

  1. package checkBox;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. /**
  7. * @version 1.35 2018-04-10
  8. * @author Cay Horstmann
  9. */
  10. public class CheckBoxTest
  11. {
  12. public static void main(String[] args)
  13. {
  14. EventQueue.invokeLater(() -> {
  15. var frame = new CheckBoxFrame();
  16. frame.setTitle("CheckBoxTest");
  17. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18. frame.setVisible(true);
  19. });
  20. }
  21. }
  1. package checkBox;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import javax.swing.*;
  6.  
  7. /**
  8. * A frame with a sample text label and check boxes for selecting font
  9. * attributes.
  10. */
  11. public class CheckBoxFrame extends JFrame
  12. {
  13. private JLabel label;
  14. private JCheckBox bold;
  15. private JCheckBox italic;
  16. private static final int FONTSIZE = ;
  17.  
  18. public CheckBoxFrame()
  19. {
  20. // add the sample text label
  21.  
  22. label = new JLabel("The quick brown fox jumps over the lazy dog.");//用相应的文本构造了JLable组件
  23. label.setFont(new Font("Serif", Font.BOLD, FONTSIZE));//设置lable的字体
  24. add(label, BorderLayout.CENTER);//边框布局:居中位置
  25.  
  26. // this listener sets the font attribute of
  27. // the label to the check box state
  28.  
  29. //Lambda表达式
  30. ActionListener listener = event -> {
  31. int mode = ;
  32. if (bold.isSelected()) mode += Font.BOLD;
  33. if (italic.isSelected()) mode += Font.ITALIC;
  34. label.setFont(new Font("Serif", mode, FONTSIZE));
  35. };
  36.  
  37. // add the check boxes
  38.  
  39. var buttonPanel = new JPanel();
  40.  
  41. //创建复选框
  42. bold = new JCheckBox("Bold");
  43. bold.addActionListener(listener);//添加监听事件
  44. bold.setSelected(true);//setSelected()方法原定或取消复选框
  45. buttonPanel.add(bold);
  46.  
  47. italic = new JCheckBox("Italic");
  48. italic.addActionListener(listener);
  49. buttonPanel.add(italic);
  50.  
  51. add(buttonPanel, BorderLayout.SOUTH);
  52. pack();
  53. }
  54. }

运行截图:

实验1:测试程序4(5分)

elipse IDE中调试运行教材491页程序12-4,运行结果理解程序;

掌握单选按钮组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

12-4代码:

  1. package radioButton;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. /**
  7. * @version 1.35 2018-04-10
  8. * @author Cay Horstmann
  9. */
  10. public class RadioButtonTest
  11. {
  12. public static void main(String[] args)
  13. {
  14. EventQueue.invokeLater(() -> {
  15. var frame = new RadioButtonFrame();
  16. frame.setTitle("RadioButtonTest");
  17. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18. frame.setVisible(true);
  19. });
  20. }
  21. }
  1. package radioButton;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import javax.swing.*;
  6.  
  7. /**
  8. * A frame with a sample text label and radio buttons for selecting font sizes.
  9. */
  10. public class RadioButtonFrame extends JFrame
  11. {
  12. private JPanel buttonPanel;
  13. private ButtonGroup group;
  14. private JLabel label;
  15. private static final int DEFAULT_SIZE = ;
  16.  
  17. public RadioButtonFrame()
  18. {
  19. // add the sample text label
  20.  
  21. label = new JLabel("The quick brown fox jumps over the lazy dog.");
  22. label.setFont(new Font("Serif", Font.PLAIN, DEFAULT_SIZE));
  23. add(label, BorderLayout.CENTER);
  24.  
  25. // add the radio buttons
  26.  
  27. buttonPanel = new JPanel();
  28. group = new ButtonGroup();//构造ButtonGroup对象
  29.  
  30. addRadioButton("Small", );
  31. addRadioButton("Medium", );
  32. addRadioButton("Large", );
  33. addRadioButton("Extra large", );
  34.  
  35. add(buttonPanel, BorderLayout.SOUTH);
  36. pack();
  37. }
  38.  
  39. /**
  40. * Adds a radio button that sets the font size of the sample text.
  41. * @param name the string to appear on the button
  42. * @param size the font size that this button sets
  43. */
  44. public void addRadioButton(String name, int size)
  45. {
  46. boolean selected = size == DEFAULT_SIZE;
  47. var button = new JRadioButton(name, selected);
  48. group.add(button);//将JRadioButton类型的对象添加到按钮组中
  49. buttonPanel.add(button);
  50.  
  51. // this listener sets the label font size
  52.  
  53. //定义动作监听器:把字体大小设置为特定值
  54. ActionListener listener = event -> label.setFont(new Font("Serif", Font.PLAIN, size));
  55.  
  56. button.addActionListener(listener);
  57. }
  58. }

运行截图:

实验1:测试程序5(5分)

elipse IDE中调试运行教材494页程序12-5,结合运行结果理解程序;

掌握边框的用法;

记录示例代码阅读理解中存在的问题与疑惑

12-5代码:

  1. package border;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. /**
  7. * @version 1.35 2018-04-10
  8. * @author Cay Horstmann
  9. */
  10. public class BorderTest
  11. {
  12. public static void main(String[] args)
  13. {
  14. EventQueue.invokeLater(() -> {
  15. var frame = new BorderFrame();
  16. frame.setTitle("BorderTest");
  17. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18. frame.setVisible(true);
  19. });
  20. }
  21. }
  1. package border;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5. import javax.swing.border.*;
  6.  
  7. /**
  8. * A frame with radio buttons to pick a border style.
  9. */
  10. public class BorderFrame extends JFrame
  11. {
  12. private JPanel demoPanel;
  13. private JPanel buttonPanel;
  14. private ButtonGroup group;
  15.  
  16. public BorderFrame()
  17. {
  18. demoPanel = new JPanel();
  19. buttonPanel = new JPanel();
  20. group = new ButtonGroup();
  21.  
  22. //调用BorderFactory的静态方法创建边框,不同效果的设置(见运行截图说明)
  23. addRadioButton("Lowered bevel", BorderFactory.createLoweredBevelBorder());
  24. addRadioButton("Raised bevel", BorderFactory.createRaisedBevelBorder());
  25. addRadioButton("Etched", BorderFactory.createEtchedBorder());
  26. addRadioButton("Line", BorderFactory.createLineBorder(Color.BLUE));
  27. addRadioButton("Matte", BorderFactory.createMatteBorder(, , , , Color.BLUE));
  28. addRadioButton("Empty", BorderFactory.createEmptyBorder());
  29.  
  30. //将带有标题的蚀刻边框添加到面板上
  31. Border etched = BorderFactory.createEtchedBorder();
  32. Border titled = BorderFactory.createTitledBorder(etched, "Border types");//给边框添加标题Border types
  33. buttonPanel.setBorder(titled);
  34.  
  35. setLayout(new GridLayout(, ));//两行一列的网格布局
  36. add(buttonPanel);
  37. add(demoPanel);
  38. pack();
  39. }
  40.  
  41. public void addRadioButton(String buttonName, Border b)
  42. {
  43. var button = new JRadioButton(buttonName);
  44. button.addActionListener(event -> demoPanel.setBorder(b));
  45. group.add(button);
  46. buttonPanel.add(button);
  47. }
  48. }

运行截图:

实验1:测试程序6(5分)

elipse IDE中调试运行教材498页程序12-6,结合运行结果理解程序;

掌握组合框组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

12-6代码:

  1. package comboBox;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. /**
  7. * @version 1.36 2018-04-10
  8. * @author Cay Horstmann
  9. */
  10. public class ComboBoxTest
  11. {
  12. public static void main(String[] args)
  13. {
  14. EventQueue.invokeLater(() -> {
  15. var frame = new ComboBoxFrame();
  16. frame.setTitle("ComboBoxTest");
  17. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18. frame.setVisible(true);
  19. });
  20. }
  21. }
  1. package comboBox;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Font;
  5.  
  6. import javax.swing.JComboBox;
  7. import javax.swing.JFrame;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPanel;
  10.  
  11. /**
  12. * A frame with a sample text label and a combo box for selecting font faces.
  13. */
  14. public class ComboBoxFrame extends JFrame
  15. {
  16. private JComboBox<String> faceCombo;
  17. private JLabel label;
  18. private static final int DEFAULT_SIZE = ;
  19.  
  20. public ComboBoxFrame()
  21. {
  22. // add the sample text label
  23.  
  24. label = new JLabel("The quick brown fox jumps over the lazy dog.");
  25. label.setFont(new Font("Serif", Font.PLAIN, DEFAULT_SIZE));
  26. add(label, BorderLayout.CENTER);
  27.  
  28. // make a combo box and add face names
  29.  
  30. //创建组合框
  31. faceCombo = new JComboBox<>();
  32. faceCombo.addItem("Serif");
  33. faceCombo.addItem("SansSerif");
  34. faceCombo.addItem("Monospaced");
  35. faceCombo.addItem("Dialog");
  36. faceCombo.addItem("DialogInput");
  37.  
  38. // the combo box listener changes the label font to the selected face name
  39.  
  40. faceCombo.addActionListener(event ->
  41. label.setFont(
  42. new Font(faceCombo.getItemAt(faceCombo.getSelectedIndex()),
  43. Font.PLAIN, DEFAULT_SIZE)));
  44.  
  45. // add combo box to a panel at the frame's southern border
  46.  
  47. var comboPanel = new JPanel();
  48. comboPanel.add(faceCombo);
  49. add(comboPanel, BorderLayout.SOUTH);
  50. pack();
  51. }
  52. }

运行截图:

实验2:结对编程练习包含以下4部分:(30分)

(1) 用户信息输入界面如下图所示:

(2) 用户点击提交按钮时,用户输入信息显示在录入信息显示区,格式如下:

(3) 用户点击重置按钮后,清空用户已输入信息;

(4) 点击窗口关闭,程序退出。

1)   程序设计思路简述;

面板的布局设置是网格布局,四个面板,然后分别在相应的位置添加文本域,面版二是两个复选框,面板三分别是两个居中的单选,复选提交按钮,对按钮设置了动作监听器,点击提交按钮显示输入信息,点击重置按钮,输入信息清零。面板四是显示输入信息。

2)   符合编程规范的程序代码;

  1. package UserGUITest;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.FlowLayout;
  7. import java.awt.GridLayout;
  8. import java.awt.Label;
  9. import java.awt.TextField;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12.  
  13. import javax.swing.BorderFactory;
  14. import javax.swing.ButtonGroup;
  15. import javax.swing.JButton;
  16. import javax.swing.JCheckBox;
  17. import javax.swing.JFrame;
  18. import javax.swing.JLabel;
  19. import javax.swing.JPanel;
  20. import javax.swing.JRadioButton;
  21. import javax.swing.JScrollPane;
  22. import javax.swing.JTextArea;
  23. import javax.swing.JTextField;
  24. import javax.swing.SwingConstants;
  25. import javax.swing.border.Border;
  26.  
  27. public class UserGUITFrame extends JFrame{
  28.  
  29. public static final int TEXTAREA_ROWS = ;
  30. public static final int TEXTAREA_COLUMNS =;
  31.  
  32. public UserGUITFrame() {
  33. setSize(,);
  34. setLayout(new GridLayout(,));
  35.  
  36. JPanel firstpanel=new JPanel();
  37. firstpanel.setLayout(new GridLayout(,));
  38. firstpanel.setLayout(null);
  39. JLabel label1 = new JLabel("姓名:");
  40. JTextField textField1 = new JTextField();
  41. JLabel label2 = new JLabel("地址:");
  42. JTextField textField2 = new JTextField();
  43. label1.setBounds(,,,);
  44. textField1.setBounds(, , , );
  45. label2.setBounds(,,,);
  46. textField2.setBounds(, , , );
  47. firstpanel.add(label1);
  48. firstpanel.add(textField1);
  49. firstpanel.add(label2);
  50. firstpanel.add(textField2);
  51.  
  52. JPanel secondpanel=new JPanel();
  53. secondpanel.setLayout(new GridLayout(,));
  54. secondpanel.setLayout(null);
  55. JPanel secondpanel1=new JPanel();
  56. secondpanel1.setPreferredSize(new Dimension(,));
  57. ButtonGroup group=new ButtonGroup();
  58. JRadioButton nan = new JRadioButton("男");
  59. JRadioButton nv = new JRadioButton("女");
  60. group.add(nan);
  61. group.add(nv);
  62. secondpanel1.add(nan);
  63. secondpanel1.add(nv);
  64. Border etched1 = BorderFactory.createEtchedBorder();
  65. Border title1 = BorderFactory.createTitledBorder(etched1,"性别");
  66. secondpanel1.setBorder(title1);
  67.  
  68. JPanel secondpanel2=new JPanel();
  69. JCheckBox read = new JCheckBox("阅读");
  70. JCheckBox sing=new JCheckBox("唱歌");
  71. JCheckBox jump=new JCheckBox("跳舞");
  72. secondpanel2.add(read);
  73. secondpanel2.add(sing);
  74. secondpanel2.add(jump);
  75. Border etched2 = BorderFactory.createEtchedBorder();
  76. Border title2 = BorderFactory.createTitledBorder(etched2,"爱好");
  77. secondpanel2.setBorder(title2);
  78. secondpanel1.setBounds(, , , );
  79. secondpanel2.setBounds(, , , );
  80. secondpanel.add(secondpanel1);
  81. secondpanel.add(secondpanel2);
  82.  
  83. JPanel thirdpanel=new JPanel();
  84. JButton qd= new JButton("提交");
  85. JButton cz= new JButton("重置");
  86. thirdpanel.add(qd);
  87. thirdpanel.add(cz);
  88.  
  89. JTextArea textArea = new JTextArea("录入信息显示区!",TEXTAREA_ROWS, TEXTAREA_COLUMNS);
  90. JScrollPane fifthpanel = new JScrollPane(textArea);
  91.  
  92. add(firstpanel);
  93. add(secondpanel);
  94. add(thirdpanel);
  95. add(fifthpanel);
  96.  
  97. qd.addActionListener(new ActionListener() {
  98. public void actionPerformed(ActionEvent e) {
  99. String xingbie = "性别:";
  100. if (nan.isSelected()) {
  101. xingbie += "男";
  102. }
  103. if (nv.isSelected()) {
  104. xingbie += "女";
  105. }
  106.  
  107. String aihao = "爱好:";
  108. if (read.isSelected()) {
  109. aihao += "阅读";
  110. }
  111. if (sing.isSelected()) {
  112. aihao += "唱歌";
  113. }
  114. if (jump.isSelected()) {
  115. aihao += "跳舞";
  116. }
  117. textArea.setText(null);
  118. textArea.append("姓名:"+textField1.getText()+" "+"地址:"+textField2.getText()+" "+xingbie+" "+aihao+'\n');
  119.  
  120. }
  121. });
  122. cz.addActionListener(new ActionListener() {
  123.  
  124. public void actionPerformed(ActionEvent e) {
  125. textField1.setText(null);
  126. textField2.setText(null);
  127. read.setSelected(false);
  128. sing.setSelected(false);
  129. jump.setSelected(false);
  130. group.clearSelection();
  131. textArea.setText("录入信息显示区!");
  132. }
  133. });
  134. }
  135.  
  136. }
  1. package UserGUITest;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. public class UserGUITest {
  7. public static void main(String[] args)
  8. {
  9. EventQueue.invokeLater(() -> {
  10. var frame = new UserGUITFrame();
  11. frame.setTitle("UserGUITest ");
  12. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  13. frame.setVisible(true);
  14. });
  15. }
  16.  
  17. }

3)   程序运行功能界面截图;

4)   结对过程描述,提供两人在讨论、细化和编程时的结对照片(非摆拍)。

实验总结:

本周学习了布局管理,如何通过设置,通过编程对页面进行布局管理,接触到五种布局管理器,各自作用不同,文本输入,文本域的使用方法,选择组件,创建菜单栏,调用框架的方法。对本章示例程序的测试,更进一步的对相关理论知识有了进一步了解,结对编程是对一个用户输入界面的设计,通过和结对伙伴的一起编程,体会到团队的力量总是大于个人,可以通过讨论,相互提出问题,解决问题,可达到事半功倍的效果。也是对编程能力的一种提升。这次结对编程内容同时也是对这次新知识的一种应用,实现了对新知识的巩固,利用,以后要多通过自己实践,多思考。

201871010128-杨丽霞《面向对象程序设计(java)》第十四周学习总结的更多相关文章

  1. 201521123061 《Java程序设计》第十四周学习总结

    201521123061 <Java程序设计>第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据 ...

  2. 201521123072《java程序设计》第十四周学习总结

    201521123072<java程序设计>第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库 ...

  3. 201521123038 《Java程序设计》 第十四周学习总结

    201521123038 <Java程序设计> 第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 接口: DriverManager ...

  4. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  5. 201521123122 《java程序设计》第十四周学习总结

    ## 201521123122 <java程序设计>第十四周实验总结 ## 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. M ...

  6. 201871010132-张潇潇《面向对象程序设计(java)》第一周学习总结

    面向对象程序设计(Java) 博文正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cn ...

  7. 扎西平措 201571030332《面向对象程序设计 Java 》第一周学习总结

    <面向对象程序设计(java)>第一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 ...

  8. 201777010217-金云馨《面向对象程序设计Java》第四周总结学习

    2019面向对象程序设计(Java)第4周学习指导及要求 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ ...

  9. 汪慧和201771010123《面向对象程序设计JAVA》第四周实验总结

    第一部分:理论知识学习部分 1.类 类(class)是具有相同属性和行为的一组对象的集合,是构造程序的基本单元,是构造对象的模板或蓝图. 2.对象 对象:即数据,对象有三个特性——1.行为 2.状态 ...

  10. 杨其菊201771010134《面向对象程序设计Java》第二周学习总结

    第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...

随机推荐

  1. 《CarbonData》

      深度访谈:华为开源数据格式 CarbonData 项目,实现大数据即席查询秒级响应   Tina 阅读数:145842016 年 7 月 13 日 19:00   华为宣布开源了 CarbonDa ...

  2. java调用含第三方库的py文件

    这是一个心酸的历程. py文件如下: 这里调用出现的问题主要是第三方包的问题,因为你的py文件里可能含有很多三方库文件,jython的jar包里可能不含有这个,所以这时需要你找到你已有三方库文件的ex ...

  3. mysql数据库的批量数据导入与导出,性能提升。

    少量数据批量导入:1. 先从数据库把唯一键的值查询出来,放在列表2. 将导入的数据遍历取出,看是否存在列表中,若不在,说明数据库没有.3. 定义两个空列表,一个做为插入数据,一个做为更新数据4. 步骤 ...

  4. java使用jxls导出Excel

    jxls是基于POI的Excel模板导出导入框架.通过使用类似于jstl的标签,有效较少导出Excel的代码量. 1.pom <!-- https://mvnrepository.com/art ...

  5. 【shell脚本】显示进度条

    使用动态时针版本显示进度条 [root@VM_0_10_centos shellScript]# cat progressBar.sh #!/bin/bash # 进度条,动态时针版本 # 定义显示进 ...

  6. 为什么Linux 普通用户在虚拟机界面可以reboot 用ssh 不能reboot

    应该是有 类似的权限控制. 如果是 localhost , 那么普通用户允许重启. 如果不是localhost,  比如ssh远程的,必须验证root权限.

  7. 【UOJ#390】【UNR#3】百鸽笼(动态规划,容斥)

    [UOJ#390][UNR#3]百鸽笼(动态规划,容斥) 题面 UOJ 题解 发现这就是题解里说的:"火山喷发概率问题"(大雾 考虑如果是暴力的话,你需要记录下当前每一个位置的鸽笼 ...

  8. 解决微信浏览器缓存站点入口文件(IIS部署Vue项目)

    最近开发的微信公众号项目中(项目采用Vue + Vux 构建,站点部署在IIS8.5上),遇到个非常奇葩的问题,发布站点内容后,通过微信打开网址发现是空白页面(后来验证是微信浏览器缓存了入口文件-in ...

  9. 用maven对ssm进行整合

    网上有很多ssm整合的教程,这里给像我这样的初学的新手提供一个整合方法,同时也记录一下自己的学习进度. 同时推荐观看相关视频  https://www.bilibili.com/video/av536 ...

  10. 初学dubbo遇到的那些坑

    昨天刚接触dubbo,遇到了一些坑,当然,这也与刚从eclipse换到了idea有一定的关系. 首先是maven仓库的问题,c盘下面的.m2文件夹默认的会被开发工具访问,所以要访问自己的本地仓库,.m ...