有条理的写java界面程序


1.学习目的:有条理的写java界面程序(学习自https://nonsensersunny.github.io/

<h3>字符匹配</h3>

package com.example;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class StringMatching extends JFrame{
    private static final long serialVersionUID = 1L;//序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性

    private JFrame jf=new JFrame("标题:charMatching");
    //提醒字符
    private JLabel l1=new JLabel("Pattern Strng:");//JLabel对象可显示文本,图片
    private JLabel l2=new JLabel("Text resource");
    private JLabel l4=new JLabel("resource");

    private JLabel l3=new JLabel("choose pattren");
    //定义菜单
    private JComboBox<String> pattern=new JComboBox<String>();//下拉框

    //资源与结果框
    private JTextArea result=new JTextArea();
    private JTextArea resource=new JTextArea();

    //某种绑定
    private  JScrollPane jp2=new JScrollPane(result);
    private JScrollPane jp=new JScrollPane(resource);//JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口,

    //输入查询字符框
    private JTextField  patternInput=new JTextField();//JTextField 是一个轻量级组件,它允许编辑单行文本

    //按钮
    private JButton find=new JButton();
    private JButton clear=new JButton();

    private JFileChooser chooser=new JFileChooser();

    //构造函数
    Demo(){
        setFrame();
        setTextFields();
        setMenu();
        setButton();

    }
    //设置主界面
    void setFrame(){
        jf.setSize(600,600);
        jf.setResizable(false);//窗体是否自由变换大小
        jf.setVisible(true);//窗口显示
        jf.setLayout(null);//未设置layout 系统默认flowLayout布局 null清除布局管理器
        jf.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置用户在此窗体上发起 "close" 时默认执行的操做

    }
    //添加文本域
    void setTextFields(){
        l1.setBounds(20,90,100,30);//setBounds(x,y,width,height); x:组件在容器X轴上的起点
        // y:组件在容器Y轴上的起点 width:组件的长度 height:组件的高度
        jf.add(l1);

        patternInput.setBounds(120,30,200,25);
        jf.add(patternInput);
        patternInput.setCaretColor(Color.CYAN);//设置符号颜色
        patternInput.setSelectedTextColor(Color.YELLOW);//设置搜索字符颜色

        l2.setBounds(20,90,100,30);
        jf.add(l2);

        resource.setLineWrap(true);//设置文本区的换行策略(句子换行)
        resource.setWrapStyleWord(true);//单词换行true
        resource.setEditable(false);
        resource.setCaretColor(Color.YELLOW);
        resource.setSelectedTextColor(Color.BLUE);////设置文本框被选择颜色
        //resource的异常处理
        try{
            @SuppressWarnings("resource")//有了suppresswarning这个批注,可以取消一些特定代码段中的警告,比如你看到警告,你查了一下,发现他不是问题,
            // 可是你为了好看又不想让他报警,就可以加这个批注。
                    BufferedReader br=new BufferedReader(new FileReader(new File("txtFile/cache.txt")));
                    resource.setText("\n\n\n\n\n");//正则表达式
                    while (br.readLine()!=null){
                        resource.setText(resource.getText()+"\n"+br.readLine()+"\n");
                    }

        }catch(Exception e){
                   e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因
        }

        //jp对象传入的参数为resource
        jp.setBounds(20,120,300,400);
        jf.add(jp);

        l4.setBounds(370,95,100,25);
        jf.add(l4);
        //result
        result.setLineWrap(true);//设置文本区的换行策略(句子换行)
        result.setWrapStyleWord(true);//单词换行true
        result.setEditable(false);
        result.setSelectedTextColor(Color.getHSBColor(1,400,100));////设置文本框被选择颜色
        //jp2对象传入的参数为result
        jp2.setBounds(20,90,100,30);
        jf.add(jp2);

     //完工

    }
    //设置下拉菜单
    void setMenu(){
        l3.setBounds(370,30,100,25);
        jf.add(l3);
        pattern.addItem("Choose File");
        pattern.addItem("Chinese Demo");
        pattern.addItem("English Demo");
        pattern.addItem("Custom");
        //给下拉框设置监听事件
        pattern.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent itemEvent) {
                if(pattern.getSelectedItem().toString()=="Chinese Demo"){
                    resource.setText("InPut your text");
                    resource.setText(null);
                    result.setText(null);

                    try{
                        @SuppressWarnings("resource")//有了suppresswarning这个批注,可以取消一些特定代码段中的警告,比如你看到警告,你查了一下,发现他不是问题,
                                // 可是你为了好看又不想让他报警,就可以加这个批注。
                                BufferedReader br=new BufferedReader(new FileReader(new File("txtFile/cache.txt")));
                        int i=1;
                        while (br.readLine()!=null){
                            resource.setText(resource.getText()+"\n"+br.readLine()+"\n");
                            i++;
                        }

                    }catch(Exception e2){
                        e2.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因
                    }

                }
                else if(pattern.getSelectedItem().toString()=="English Demo"){
                    resource.setText("InPut your text");
                    resource.setText(null);
                    result.setText(null);

                    try{
                        @SuppressWarnings("resource")//有了suppresswarning这个批注,可以取消一些特定代码段中的警告,比如你看到警告,你查了一下,发现他不是问题,
                                // 可是你为了好看又不想让他报警,就可以加这个批注。
                                BufferedReader br=new BufferedReader(new FileReader(new File("txtFile/cache.txt")));
                        int i=1;
                        while (br.readLine()!=null){
                            resource.setText(resource.getText()+"\n"+br.readLine()+"\n");
                            i++;
                        }

                    }catch(Exception e2){
                        e2.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因
                    }

                }
                else if(pattern.getSelectedItem().toString()=="Choose File"){
//                  resource.setText("Choose File");
                    resource.setText(null);
                    result.setText(null);
                    chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
                    chooser.showOpenDialog(null);
                    if(chooser.getSelectedFile().exists()&&chooser.getSelectedFile().canRead()){
                        try {
                            @SuppressWarnings("resource")
                            BufferedReader br=new BufferedReader(new FileReader(chooser.getSelectedFile()));
                            int i=1;
                            while(br.readLine()!=null){
                                resource.setText(resource.getText().trim()+"\n"+i+"—"+br.readLine());
                                i++;
                            }
                        } catch (Exception e2) {
                            e2.printStackTrace();// TODO: handle exception
                        }
                    }
                }
                else {
                    resource.setEditable(true);
                }
            }
        });
        //下拉框监听器在此结束

    }
    //设置按钮点击事件
    void setButton(){
        find.setBounds(370,65,90,25);
        jf.add(find);
        find.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                String sourceString=resource.getText();
                String patternString=patternInput.getText();
                String s[]=sourceString.split("\n");//分割字符串sourceString到s[]
                result.setText("teh text contains"+s.length+"lines");
                result.setText(result.getText()+"\nThe following line(s) contain(s) "+"\""+patternString+"\":");//没理解
                int no=0;
                for(int i=0;i<s.length;i++){
                    if(s[i].contains(patternString)){
                        result.setText(result.getText()+"\n"+(no+1)+":"+s[i]+"\n");
                        no++;
                    }
                    result.setText(result.getText()+"\n\n"+"Total"+no+"item(s)contains"+"\""+patternString+"\".");//"\""这样才行  好奇怪

                }

            }
        });
        clear.setBounds(480,65,90,25);
        jf.add(clear);
        clear.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                patternInput.setText(null);
                result.setText(null);
                resource.setText(null);
            }
        });
    }


    public static void main(String[] args){
        new Demo();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,087评论 2 44
  • 《无条件养育》是小巫翻译的美国艾尔菲•科恩的著作。正如书中所说,真正伟大的家长,其过人之处就在于他们愿意面对令...
    妖精疏离阅读 302评论 0 1
  • 多么小啊一一 一颗麻雀的心脏 可它流出的血 却跟鹰隼的一样红…… 2016,5,14下午
    周长风阅读 200评论 0 1
  • 为什么这么说呢!我们先从绝大多数家长的喜好说起: 1、家长不喜欢脏兮兮的孩子。孩子手脸、衣服脏兮兮的,会被家人和旁...
    洋烊阅读 363评论 0 2