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 = { \默认显示效果\, \显示效果\, \显示效果\ }; 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()); container.add(northPanel,BorderLayout.NORTH); //【补充代码】//将northPanel添加到窗体的北部 container.add(centerPanel,BorderLayout.CENTER); //【补充代码】//将centerPanel添加到窗体的北部 container.add(southPanel,BorderLayout.SOUTH); //【补充代码】//将southPanel添加到窗体的北部 setSize(500, 300); //【补充代码】//将窗体位于屏幕的中央 setLocationRelativeTo(null); setVisible(true); } private JPanel getNorthPanel() { JPanel panel = new JPanel(); label = new JLabel(\输入\,JLabel.LEFT); // 设置输入提示标签 panel.add(label); // 设置文本输入框; inputText=new JTextField(10); panel.add(inputText); // inputText.addActionListener(this); boldBx=new JCheckBox(\粗体\); panel.add(boldBx); italicBx=new JCheckBox(\斜体\); panel.add(italicBx); colorBtn=new JButton(\颜色\); panel.add(colorBtn); return panel; } private JPanel getCenterPanel() { JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); txtArea=new JTextArea(); panel.add(txtArea,BorderLayout.CENTER); return panel; } private JPanel getSouthPanel() { JPanel panel = new JPanel(); GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); fontNames=ge.getAvailableFontFamilyNames();// 获得系统中所有字体的名字; fontType=new JComboBox(fontNames); fontType.setEditable(false); fontType.setMaximumRowCount(10); panel.add(fontType); fontSizes=new String[63]; for(int i=0;i<63;i++) { fontSizes[i]=Integer.toString((i+10)); } fontSize=new JComboBox(fontSizes); fontSize.setEditable(false); fontSize.setMaximumRowCount(10); panel.add(fontSize); windowStyle = new JComboBox(style); panel.add(windowStyle); return panel; } public static void main(String args[]) { } ArtFont artFont = new ArtFont(); artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
2. 日历应用程序设计
编写一个应用程序,设计一个窗体,该窗体为BorderLayout布局。窗体的中心添加一个Panel容器:Panel容器的布局是7行7列的GridLayout布局,Panel容器中放置49个标签,用来显示日历。窗口的北面添加一个Panel容器,其布局是FlowLayout布局,Panel容器中放置两个按钮:nextMonth和previousMonth。窗口的南面添加一个Panel容器,其布局是FlowLayout,Panel容器中放置一个标签用来显示一些信息。
请按以下步骤完成程序设计:
1) 编写CalendarBean类,实现日期类: public class CalendarBean { String day[];
int year = 2013, month = 0;
public void setYear(int year) { this.year = year; }
public int getYear() { return year; }
public void setMonth(int month) { this.month = month; }
public int getMonth() { return month; }
//返回某年某月1号开始的日期数组
public String[] getCalendar() { String a[] = new String[42];
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++) { a[i] = String.valueOf(n); n++; }
return a; } }
2) 补充代码,完成日历窗体界面类设计:
public class CalendarFrame extends Frame { Label labelDay[] = new Label[42]; Label labelYear;
Button titleName[] = new Button[7]; Button nextMonth, previousMonth; Label showMessage; TextField inputYear; CalendarBean calendar;
String name[] = { \日\, \一\, \二\, \三\, \四\, \五\, \
六\ };
int year = 2013, 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++) {
titleName[i] = new Button(name[i]);
【补充代码】// panel添加组件titleName[i]。 }
for (int i = 0; i < 42; i++) {
labelDay[i] = new Label(\, Label.CENTER);
【补充代码】// panel添加组件labelDay[i]。 }
for (int i = 0; i < 42; i++) { labelDay[i].setText(days[i]); }
return panel; }
private Panel getSouthPanel() { Panel panel = new Panel(); 【补充代码…】 return panel; }