Java編程練習Day08

南七丶 2022-01-08 06:11:52 阅读数:712

java day08 day

Java編程練習Day08

複選框控件數組


實例說明

複選框控件在進行GUI程序界面設計時經常使用。例如,選擇用戶愛好的程序界面中藥添加很多選項,這些選項如果通過GUI界面設計器來錄入時非常費時,而且生成的代碼臃腫,不方便維護。
本實例通過複選框控件數組實現了用戶愛好信息的選擇界面,而且界面中的複選框數量可以根據指定 複選框名稱的字符串的長度來自動調節。

設計過程

1.在項目中創建CheckBoxArray窗體類。設置窗體的標題,並在界面上方添加一個標簽顯示“你的愛好有哪些:”。

2.編寫getPanel()方法創建面板,並在面板中通過控件數組來創建愛好複選框。其中所有複選框的文本都由字符串數組定義,複選框的數量根據字符串數組長度確定。

測試代碼


import javax.swing.*;
import java.awt.*;
public class CheckBoxArray extends JFrame {

//創建提示標簽
JLabel tip;
//創建控件數組
JCheckBox[] boxes;
//創建面板容器
JPanel panel;
//創建盒子
Box box;
Box box1;
Box box2;
//創建窗體構造器
public CheckBoxArray() {

//設置窗體比特置和窗體大小
setBounds(100, 100, 500, 400);
//設置窗口標題
setTitle("複選框控件數組");
//設置關閉方式
setDefaultCloseOperation(EXIT_ON_CLOSE);
//設置窗體可見
setVisible(true);
tip = new JLabel("你的愛好有哪些:");
JPanel panel = getPanel();
box = Box.createVerticalBox();
box1 = Box.createHorizontalBox();
box2 = Box.createHorizontalBox();
box1.add(tip);
box2.add(panel);
box.add(box1);
box.add(box2);
add(box);
}
//getPanel()方法
private JPanel getPanel(){

if(panel == null){

//創建面板對象
panel = new JPanel();
//設置網格布局管理器
panel.setLayout(new GridLayout(0,4));
//創建控件文本數組
String[] labels = {
"足球","籃球","魔術","乒乓球","看電影","魔獸世界","CS戰隊","羽毛球",
"遊泳","爬山","唱歌","寫博客","動物世界","拍照","彈吉他","讀報紙","飆車","逛街",
"逛商場","麻將","看書","上網看資料","新聞","軍事","八卦","養生","飲茶","英雄聯盟"};
//創建控件數組
boxes = new JCheckBox[labels.length];
//遍曆控件數組
for (int i = 0; i < boxes.length; i++) {

//初始化數組中的複選框組件
boxes[i] = new JCheckBox(labels[i]);
panel.add(boxes[i]);//把每一個複選框添加到面板中
}
}
return panel;
}
public static void main(String[] args) {

new CheckBoxArray();
}
}

運行結果

在這裏插入圖片描述

用數組反轉字符串


實例說明

本實例使用數組反轉算法實現字符串的反轉。和StringBuilder類的reserve()方法相比,
本實例要複雜一些,因為算法都是自己完成的,但是相比之下本實例更靈活一些,實例在字符串
反轉過程中,顯示了反轉步驟,開發人員還可以在反轉過程中加入更多的業務處理,如控制並顯示進度條,這是StringBuilder類的reserve()方法無法實現的。

設計過程

1.在項目中創建窗體類ArrayReverseString。在窗體中添加兩個文本框,一個文本域和一個反轉按鈕控件。

2.編寫反轉按鈕的時間處理方法,在該方法中把用戶輸入的字符串轉換為字符數組,然後使用數組反轉算法,反轉數組元素的索引,再把反轉後的字符數組組合成字符串顯示在文本框控件中。

測試代碼

package com.zhang.exer.day08;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ArrayReverseString extends JFrame {

//創建標簽
JLabel tip;
//創建文本框
JTextField textField1;
JTextField textField2;
//創建文本域
JTextArea textArea;
//創建按鈕
JButton reserve;
//創建滾動面板
JScrollPane jsp;
//創建構造器
public ArrayReverseString(){

tip = new JLabel("輸入一個字符串:");
textField1 = new JTextField(5);
textField2 = new JTextField(5);
textArea = new JTextArea(10,10);
reserve = new JButton("反轉");
jsp = new JScrollPane(textArea);
//設置窗體標題
setTitle("用數組反轉字符串");
//設置窗體比特置和大小
setBounds(250, 250, 450, 400);
//設置窗體關閉方式
setDefaultCloseOperation(EXIT_ON_CLOSE);
//設置窗體可見
setVisible(true);
//設置窗口不可縮放
setResizable(false);
//設置布局方式為空布局
setLayout(null);
//設置各組件比特置
tip.setBounds(20, 20,100,30);
textField1.setBounds(150, 20,250,30);
reserve.setBounds(20, 50,80,30);
textField2.setBounds(150,50,250,30 );
jsp.setBounds(75, 100,300,250);
//創建事件監聽器
reserve.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

String inputStr = textField1.getText();//獲取用戶輸入的字符串
char[] strArray = inputStr.toCharArray();//提取字符數組
textArea.setText("");//清空文本域
for (int i = 0; i < strArray.length / 2; i++) {
//數組反轉算法
char temp = strArray[i];//交換數組元素
strArray[i] = strArray[strArray.length-i-1];
strArray[strArray.length-i-1] = temp;
textArea.append("第"+(i+1)+"次循環:\t");//顯示循環反轉過程
for (char c:strArray) {

textArea.append(c+"");
}
textArea.append("\n");//文本域換行
}
String outputStr = new String(strArray);//把字符數組轉換為字符串
textField2.setText(outputStr);//顯示反轉後的字符串
}
});
//將組件添加到窗口中去
add(tip);
add(textField1);
add(textField2);
add(reserve);
add(jsp);
}
public static void main(String[] args) {

new ArrayReverseString();
}
}

運行結果

在這裏插入圖片描述

版权声明:本文为[南七丶]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080611519840.html