实验四图形用户界面设计.docx
实验四 图形用户界面设计 实验四图形用户界面设计 实验目的 1掌握Java语言中GUI编程的基本方法 2掌握Java语言中AWT组件的基本用法 3掌握Java语言中Swing组件的基本用法 实验内容 1.图形用户界面设计程序(ArtFont.java) 要求:设计一个文字字体设置窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。并模拟在不同操作系统下的显示效果。程序的最终显示效果如下: 提示:整个窗体继承于JFrame,采用BorderLayout布局。在窗体中添加三个JPanel:northPanel、centerPanel和southPanel,分别位于窗体的北部、中部和南部,然后分别在各个面板中添加其它组件,并逐步完善程序功能。 请按以下步骤完成程序设计: 1)新建ArtFont类,该类用于显示主界面。其主要代码如下: publicclass ArtFont extends JFrame JComboBox fontType;/字体样式下拉框, JComboBox fontSize;/字体大小下拉框 JComboBox windowStyle;/窗体样式下拉框 JCheckBox boldBx;/ 粗体按钮 JCheckBox italicBx;/ 斜体按钮 JButton colorBtn;/ 颜色按钮; String fontNames;/ 字体名称; String fontSizes;/ 字体大小; JLabel label;/ 输入提示标签; JTextField inputText;/ 文字输入框; JTextArea txtArea;/ 文字显示区; JPanel northPanel;/ 字体设置; JPanel centerPanel;/ 显示效果区 JPanel southPanel;/样式设置 Font font; int boldStyle, italicStyle, underlineStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle= Color.black;/ 设置字体的默认颜色为黑色; String style= "默认显示效果", "Windows显示效果", "Unix 显示效果" ; public ArtFont() super("字体设置"); / 设置默认字体 boldStyle = 0; italicStyle = 0; underlineStyle = 0; fontSizeStyle = 10; fontNameStyle = "宋体" font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle); northPanel = getNorthPanel(); centerPanel = getCenterPanel(); southPanel = getSouthPanel(); / 设置容器; Container container = getContentPane(); container.setLayout(new BorderLayout(); /将northPanel添加到窗体的北部 /将centerPanel添加到窗体的中部 /将southPanel添加到窗体的南部 setSize(500, 300); /将窗体位于屏幕的中央 setVisible(true); private JPanel getNorthPanel() JPanel panel = new JPanel(); return panel; private JPanel getCenterPanel() JPanel panel = new JPanel(); return panel; private JPanel getSouthPanel() JPanel panel = new JPanel(); return panel; publicstaticvoid main(String args) ArtFont artFont = new ArtFont(); artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); 2)根据ArtFont类代码和程序界面图设计北部面板northPanel: private JPanel getNorthPanel() JPanel panel = new JPanel(); return panel; 3)根据ArtFont类代码和程序界面图设计中部面板centerPanel: private JPanel getCenterPanel() JPanel panel = new JPanel(); return panel; 4)根据ArtFont类代码和程序界面图设计南部面板southPanel: private JPanel getSouthPanel() JPanel panel = new JPanel(); /获得系统默认字体 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); fontNames = ge.getAvailableFontFamilyNames(); fontType = new JComboBox(fontNames); /设置字体大小 fontSizes = new String63; for (int i = 0; i fontSizesi = Integer.toString(i+10); return panel; 5)调试、编译和运行程序,并显示正确界面。 2.日历应用程序设计 编写一个应用程序,设计一个窗体,该窗体为BorderLayout布局。窗体的中心添加一个Panel容器:Panel容器的布局是7行7列的GridLayout布局,Panel容器中放置49个标签,用来显示日历。窗口的北面添加一个Panel容器,其布局是FlowLayout布局,Panel容器中放置两个按钮:nextMonth和previousMonth。窗口的南面添加一个Panel容器,其布局是FlowLayout,Panel容器中放置一个标签用来显示一些信息。 请按以下步骤完成程序设计: 1)编写CalendarBean类,实现日期类: publicclass CalendarBean String day; int year = 2022, month = 0; publicvoid setYear(int year) this.year = year; publicint getYear() return year; publicvoid setMonth(int month) this.month = month; publicint getMonth() return month; /返回某年某月1号开始的日期数组 public String getCalendar() String a = new String42; Calendar 日历 = Calendar.getInstance(); /注意:1月份是从0开始,所以要减1 日历.set(year, month - 1, 1); int星期几 = 日历.get(Calendar.DAY_OF_WEEK) - 1; int day = 0; if (month = 1 | month = 3 | month = 5 | month = 7 | month = 8| month = 10 | month = 12) day = 31; if (month = 4 | month = 6 | month = 9 | month = 11) day = 30; if (month = 2) if(year% 4 = 0) && (year% 100 != 0) | (year% 400 = 0) day = 29; else day = 28; for (int i = 星期几, n = 1; i <星期几 + day; i+) ai = String.valueOf(n); n+; return a; 2)补充代码,完成日历窗体界面类设计: publicclass CalendarFrame extends Frame Label labelDay = new Label42; Label labelYear; Button titleName = new Button7; Button nextMonth, previousMonth; Label showMessage; TextField inputYear; CalendarBean calendar; String name = "日", "一", "二", "三", "四", "五", "六" ; int year = 2022, month = 1; String days; public CalendarFrame() calendar = new CalendarBean(); calendar.setYear(year); calendar.setMonth(month); days = calendar.getCalendar(); ScrollPane scrollPane = new ScrollPane(); scrollPane.add(getCenterPanel(); / 窗口添加scrollPane在中心区域 / 窗口添加pNorth 在北面区域 / 窗口添加pSouth 在南区域。 private Panel getNorthPanel() Panel panel = new Panel(); return panel; private Panel getCenterPanel() Panel panel = new Panel(); / 将panel的布局设置为7行7列的GridLayout布局 for (int i = 0; i < 7; i+) titleNamei = new Button(namei); / panel添加组件titleNamei。 for (int i = 0; i < 42; i+) labelDayi = new Label("", Label.CENTER); / panel添加组件labelDayi。 for (int i = 0; i < 42; i+) labelDayi.setText(daysi); return panel; private Panel getSouthPanel() Panel panel = new Panel(); return panel; 3)设计主应用程序类: publicclass CalendarMainClass publicstaticvoid main(String args) CalendarFrame frame = new CalendarFrame(); frame.setTitle("日历应用程序"); frame.setBounds(100, 100, 360, 300); frame.setVisible(true); frame.validate(); 4)调试、编译和运行程序,并显示正确界面。 实验总结 请书写你对本次实验有哪些实质性的收获和体会,以及对本次实验有何良好的建议?