用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

筱yu尚    -  云代码空间

—— 今朝灯火阑珊处,何忧无友。它年折桂古蟾宫,必定有君!

java多功能记事本

2014-07-26|1700阅||

摘要:java多功能记事本

import java.awt.event.ActionListener;//用于接收操作事件的侦听器接口
import java.awt.event.WindowAdapter;//接收窗口事件的抽象适配器类
import java.awt.event.ItemListener;//接收项事件的侦听器接口
import java.awt.event.TextListener;//用于接收文本事件的侦听器接口
import java.awt.event.ActionEvent;//指示发生了组件定义的动作的语义事件
import java.awt.event.WindowEvent;//窗口处理事件
import java.awt.event.ItemEvent;//指示项被选定或取消选定的语义事件
import java.awt.event.TextEvent;//指示对象文本已改变的语义事件
import java.awt.event.KeyEvent;//组件中发生键击的事件
import javax.swing.JOptionPane;//有助于方便地弹出要求用户提供值或向其发出通知的标准对话框
import javax.swing.JTextField;//编辑单行文本
import javax.swing.JComboBox;//将按钮或可编辑字段与下拉列表组合的组件
import javax.swing.ImageIcon;//监视该图像的加载状态 
import javax.swing.JButton;//按钮
import javax.swing.JLabel;//标签
import javax.swing.JFrame;//框架窗口
import javax.swing.Icon;//固定大小的图片
import javax.swing.UIManager;
import java.awt.TextField;//对象是允许编辑单行文本的文本组件
import java.awt.FileDialog;//显示一个对话框窗口,用户可以从中选择文件
import java.awt.FlowLayout;//布局
import java.awt.TextArea;//文本域
import java.awt.Choice;//下拉列表
import java.awt.Button;//按钮
import java.awt.Image;//图片
import java.awt.Panel;//面板
import java.awt.Frame;//框架窗口
import java.awt.Color;//设置RGB颜色
import java.awt.Font;//设置字体的形态
import java.io.BufferedReader;//从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
import java.io.FilenameFilter;//实现此接口的类实例可用于过滤器文件名
import java.io.IOException;//当发生某种I/O异常时抛出此异常
import java.io.FileWriter;//写入字符文件
import java.io.FileReader;//读取字符文件
import java.io.File;//文件夹
import java.util.Date;//时间的获取
import java.util.concurrent.TimeUnit;//跨单元转换和执行计时及延迟操作的实用工具方法
import java.text.SimpleDateFormat;//用默认的模式和默认语言环境的日期格式符号构造
import java.sql.DriverManager;//提供链接数据库的方法
import java.sql.SQLException;//提供关于数据库访问错误或其他错误信息的异常
import java.sql.ResultSet;//表示数据库结果集的数据表
import java.sql.Statement;//将单个方法应用于某一目标和一组参数
import java.sql.Connection;//与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果
import java.lang.Class;//表示正在运行的 Java 应用程序中的类和接口
import javax.media.Manager;//音频播放管理
import javax.media.Player;//音乐播放
public class F34 extends WindowAdapter implements TextListener,ActionListener,ItemListener
{   
   private JLabel L1,L2,L3,L4,L5,L6,L7;//标签
    Choice C1,C2,C3,C4,C5;//定义五个下拉列表框
static JTextField tf1,tf2,tf3,tf4;//定义四个静态的单行文本框
       Frame f2;//定义一个框架窗口
JFrame f1,f3,f4,f5;
       static TextArea ta,tf5,tf6,tf7,tf8;//定义静态的文本区域
       Panel p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11;//定义上下面板
       Button  date,open,save,information,search,go,newfile,photos,music;//定义几个不同的按钮键
JButton sure,cancel,name,password,back,mysql,computer,two;
       FileDialog fd;//对话框
       File file=null; //定义一个空的文件夹
//登陆界面的背景图
ImageIcon imageIcon = new ImageIcon( getClass().getResource("罗志祥.jpg"));
   JLabel imagelabel = new JLabel( imageIcon);
             //窗口的图标
static ImageIcon i=new ImageIcon("美女1.jpg");
//图片的加入
private JComboBox images;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
       private JLabel label;
       private String names[]={"青春.gif","顺利.gif","美眉.jpg",
                   "美女.gif","美女1.jpg","美女3.jpg",};
           //定义固定大小图片数组
       private Icon icons[]={  
                    new ImageIcon(names[0]),
                    new ImageIcon(names[1]),
new ImageIcon(names[2]),
new ImageIcon(names[3]),
                    new ImageIcon(names[4]),
                            new ImageIcon(names[5]),};
public static void main(String args[]) throws SQLException
{
F34 f=new F34();
   f.上面板();
f.下面板();
f.面板布置();
Date d1=new Date();//根据当前的时间获取Date对象d1
SimpleDateFormat f1=new SimpleDateFormat("yyyy-MM-dd\n");//获取现在的时间   
ta.setText(f1.format(d1));//在文本框中显示时间
tf1.setText("I can tell you the time,too");//单行文本框的内容
tf2.setText("Input you want to search for content");
tf1.setForeground(Color.GREEN);//单行文本框内文字的颜色
tf2.setForeground(Color.BLUE);
try {
     String lookAndFeel = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
     UIManager.setLookAndFeel(lookAndFeel);
 }catch (Exception e){}
   }
@SuppressWarnings("unchecked")
public void 上面板() 
{   
   f1=new JFrame("Landing");//名称
f1.setIconImage(i.getImage());//设置窗口的图标
   f2=new Frame("Notepad");//名称
f2.setSize(650,500);//框架的宽和高
f2.setLocation(100, 140);//窗口左上角的坐标
f2.setIconImage(i.getImage());//设置窗口的图标
f3=new JFrame("Photos");//名称
f3.setIconImage(i.getImage());//设置窗口的图标
f4=new JFrame("Search on line");//名称
f4.setIconImage(i.getImage());//设置窗口的图标
f5=new JFrame("Saving");//名称
f5.setIconImage(i.getImage());//设置窗口的图标
//设置随机的背景色
int r=(int)(Math.random()*255);
        int g=(int)(Math.random()*255);
int b=(int)(Math.random()*255);
Color colorBackground=new Color(r,g,b);
f1.setForeground(Color.BLACK);//前景色
f1.addWindowListener(this);
f2.setBackground(colorBackground);//设置背景颜色,随机产生的颜色
f2.setForeground(Color.RED);//前景色//字体的颜色
f2.addWindowListener(this);
f3.setForeground(Color.BLUE);//前景色
f3.addWindowListener(this);
f4.setForeground(Color.BLACK);//前景色
f4.addWindowListener(this);
f5.setForeground(Color.BLACK);//前景色
f5.addWindowListener(this);
ta=new TextArea();
ta.setFont(new Font("TextArea", Font.BOLD+Font.ITALIC, 16)); //设置字体名字,样式加粗和斜体,大小
   f2.add(ta);//将文本域添加到框架窗口中去
ta.addTextListener(this); 
tf5=new TextArea();
tf6=new TextArea();
tf7=new TextArea();
tf8=new TextArea();
        tf1=new JTextField(14);//文本框的长度
tf1.setEditable(false);
tf2=new JTextField(18);//文本框的长度
tf3=new JTextField(10);
tf4=new JTextField(10);
p1=new Panel();
p1.setLayout(new FlowLayout(FlowLayout.LEFT,15,10));//记事本上面板布局,左对齐
p2=new Panel();
p2.setLayout(new FlowLayout(FlowLayout.LEFT,16,10));//记事本下面板间距左右,上下
p4=new Panel();
p4.setLayout(new FlowLayout(FlowLayout.LEFT));//登陆面板
p5=new Panel();
p5.setLayout(new FlowLayout(FlowLayout.LEFT,85,20));//登陆面板
p6=new Panel();
p6.setLayout(new FlowLayout(FlowLayout.LEFT,150,0));//登陆面板
p7=new Panel();
p7.setLayout(new FlowLayout(FlowLayout.LEFT,85,0));//搜索的上面板
p8=new Panel();
p8.setLayout(new FlowLayout(FlowLayout.LEFT,130,0));//搜索的下面板
p9=new Panel();
p9.setLayout(new FlowLayout(FlowLayout.LEFT));//搜索的面板
p10=new Panel();
p10.setLayout(new FlowLayout(FlowLayout.LEFT,12,20));//保存面板
p11=new Panel();
p11.setLayout(new FlowLayout(FlowLayout.LEFT));//保存面板
         //图片的加入
p3=new Panel();
p3.setLayout(new FlowLayout());//相册的布局
images=new JComboBox(names);
images.setMaximumRowCount(6);
images.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent e){
label.setIcon(icons[images.getSelectedIndex()]);
}
   }
   ); //图片事件结束
//按钮图标上的名称
open=new Button("Open");
save=new Button("Save");
newfile=new Button("New");
music=new Button("Music");
information=new Button("Introduction");
date=new Button("Time");
search=new Button("Search");
go=new Button("Go!");
mysql=new JButton("MySQL");
computer=new JButton("Computer");
two=new JButton("Both!");
photos=new Button("Photos");
sure=new JButton("Enter[E]");
sure.setToolTipText("点击进入记事本界面");//当鼠标停留在按钮上时显示“点击进入记事本界面”字样
sure.setMnemonic(KeyEvent.VK_ENTER);//设置按钮的快捷键alt+E
cancel=new JButton("Cancel[C]");
cancel.setToolTipText("选择后将退出该界面");
cancel.setMnemonic(KeyEvent.VK_C);//设置按钮的快捷键ALT+c
name=new JButton("Name");
name.setToolTipText("请在右文本框内输入用户名");
password=new JButton("PassWord");
password.setToolTipText("请输入登陆密码");
back=new JButton("Back");
back.setToolTipText("返回到记事本界面");
back.setBounds(50,182,208,218);
//按钮监听器注册
save.setEnabled(false);
open.addActionListener(this);
newfile.addActionListener(this);
search.addActionListener(this);
save.addActionListener(this);
tf1.addActionListener(this);
go.addActionListener(this);
information.addActionListener(this);
date.addActionListener(this); 
photos.addActionListener(this);
sure.addActionListener(this);
cancel.addActionListener(this);
tf2.addActionListener(this);
back.addActionListener(this);
mysql.addActionListener(this);
computer.addActionListener(this);
two.addActionListener(this);
music.addActionListener(this);
         //面板的位置
f2.add(p1, "North");//框架窗口上方
f2.add(p2,"South");//框架窗口下方
f3.add(p3,"North");
f1.add(p4,"Center");
f1.add(p5,"South");
f1.add(p6, "North");//框架窗口上方
f4.add(p7,"Center");
f4.add(p8,"South");
f4.add(p9,"North");
f5.add(p10,"South");
f5.add(p11,"North");
}
  //f2的添加三个下拉列表
public void 下面板() 
{   
   L1=new JLabel("Weather");//标签的名字
L1.setToolTipText("天气情况");
C1=new Choice();
C1.add("晴朗");//下拉列表的内容
C1.add("多云");//也可以用C1.addItem("多云");但是这个已过时
C1.add("小雨");
C1.add("大雨");
C1.add("暴雨");
C1.add("小雪");
C1.add("大雪");
C1.add("暴雪");
L1.setForeground(Color.YELLOW);
L2=new JLabel("Mood");
L2.setToolTipText("心情状况");
C2=new Choice();
C2.add("很好");
C2.add("好");
C2.add("一般");
C2.add("差");
C2.add("糟糕");
        L2.setForeground(Color.YELLOW);
C2.setForeground(Color.BLUE);
L3=new JLabel("Temperature");
L3.setToolTipText("温度高低状况");
C3=new Choice();
C3.add("<-10 度");
C3.add("-10~0度");
C3.add("0~10 度");
C3.add("10~20度");
C3.add("20~30度");
C3.add("30~40度");
C3.add(" >40 度");
L3.setForeground(Color.YELLOW);
L4=new JLabel("Eated");
L4.setToolTipText("吃了些什么");
C4=new Choice();
C4.add("米饭");
C4.add("馒头");
C4.add("包子");
C4.add("大饼");
C4.add("稀饭");
C4.add("小炒");
C4.add("大餐");
C4.add("没吃");
L4.setForeground(Color.YELLOW);
C4.setForeground(Color.BLUE);
C5=new Choice();
C5.add("Title");
C5.add("Keyword");
C5.setForeground(Color.BLUE);
//监听下拉列表
C1.addItemListener(this);
C2.addItemListener(this);
C3.addItemListener(this);
C4.addItemListener(this);
    }
//将按钮添加到相应的面板上
public void 面板布置()
{  
   p1.add(open);
p1.add(save);
p1.add(newfile);
p1.add(date);
p1.add(tf1);
p1.add(information);
p1.add(search);
p1.add(music);
p2.add(L1);
p2.add(C1);
p2.add(L2);
p2.add(C2);
p2.add(L3);
p2.add(C3);
p2.add(L4);
p2.add(C4);
L5=new JLabel("请正确填写登陆验证");
L5.setForeground(Color.RED);
L6=new JLabel("----欢迎使用搜索功能----");
L6.setForeground(Color.RED);
        //图片的添加
p2.add(photos);
p3.add(images); 
label=new JLabel(icons[0]);//显示第一张图片
p3.add(label);
p3.add(back);
p4.add(name);
p4.add(tf3);
p4.add(password);
p4.add(tf4);
p4.add(imagelabel);
p5.add(sure);
p5.add(cancel);
p6.add(L5);
p7.add(L6);
p8.add(go);
p9.add(C5);
p9.add(tf2);
p10.add(mysql);
p10.add(computer);
p10.add(two);
L7=new JLabel("请选择所要保存的地方,数据库or计算机or两者");
L7.setForeground(Color.BLUE);
p11.add(L7);
f1.setSize(430, 250);//框架的宽和高
f1.setLocation(330, 440);//窗口左上角的坐标
f1.setVisible(true);//设置窗口可见
    }
   //保存文本域中输入的内容
public void save(File file) 
{
try 

FileWriter fw = new FileWriter(file);
fw.write(ta.getText());
fw.close();
save.setEnabled(false);

catch (IOException q) {}//输出操作异常
}
//下拉列表事件处理
public void itemStateChanged(ItemEvent e)
     {
        if(e.getStateChange()==ItemEvent.SELECTED){
  if(e.getSource()==C1){
                ta.append("天气:"+C1.getSelectedItem()+"\t\n");//保存到记事本的多行文本域中
tf5.append(C1.getSelectedItem());
}  
  else if(e.getSource()==C2){
                ta.append("心情:"+C2.getSelectedItem()+"\t\n");//保存到记事本的多行文本域中
tf6.append(C2.getSelectedItem());
}  
  else if(e.getSource()==C3){
                ta.append("温度:"+C3.getSelectedItem()+"\t\n");//保存到记事本的多行文本域中
tf7.append(C3.getSelectedItem());
}  
  else{
                ta.append("吃的:"+C4.getSelectedItem()+"\t\n");//保存到记事本的多行文本域中
tf8.append(C4.getSelectedItem());
 }  
     }
}
       //文本域处理事件
public void textValueChanged(TextEvent e) 
{  
  save.setEnabled(true);
}
  //关闭窗口事件
public void windowClosing(WindowEvent e) 
{
System.exit(0);
}
//按钮,列表,菜单事件处理
public void actionPerformed(ActionEvent e) 
{       //登陆密码验证
String s=e.getActionCommand();
if(s.equals("Enter[E]"))
{
String n=tf3.getText();
String pw=tf4.getText();
if((n.equals("q"))&&(pw.equals("123")))
{
f1.dispose();  
    f2.setVisible(true);  
return;
}
else
{
String m7= "Wrong wrote,please write it again!";
   JOptionPane.showMessageDialog(f1, m7, "Landing",JOptionPane.PLAIN_MESSAGE);
tf3.setText("");
tf4.setText("");
}
}
              //取消登录
if (e.getSource()==cancel) 
  { 
f1.dispose();
  }
//打开文件
if (e.getSource()==open) 

fd = new FileDialog(f2,"打开",FileDialog.LOAD);
fd.setVisible(true); 
if ((fd.getDirectory()!=null)&&(fd.getFile()!=null))
{
try 
{
file = new File(fd.getDirectory(),fd.getFile());
    FileReader fr = new FileReader(file);
    BufferedReader br=new BufferedReader(fr);
    String aline;
    while((aline=br.readLine())!=null)
    ta.append(aline+"\n");
    fr.close();
    br.close();

catch (IOException q) {}//输出操作异常
}
}
     //搜索按钮
   if (e.getSource()==search)

 f2.dispose();//关闭记事本窗口
 f4.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 f4.setSize(300, 200);//框架的宽和高
     f4.setLocation(800,140);//窗口左上角的坐标
 f4.setVisible(true);
  }
      //搜索开始    后续做关键字搜索
if(C5.getSelectedItem().equals("Title")){
if (e.getSource()==go) 
  { 
f4.dispose();
            f2.setSize(650, 500);//框架的宽和高
   f2.setLocation(150, 140);//窗口左上角的坐标
f2.setVisible(true);
    String sql="select "+tf2.getText()+" from Notepad";
      try
           {  
            Class.forName("com.mysql.jdbc.Driver");//加载驱动程序
            Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/xiao","root","123");//建立数据库链接
            Statement stmt=conn.createStatement();//建立连接声明 
            ResultSet rs=stmt.executeQuery(sql);//执行sql2语句,并需要使用其结果
       while (rs.next())
        {
  ta.append(rs.getString(tf2.getText()));
  ta.append("\t\n");
         }
          conn.close();//关闭数据库连接
         }
       catch(SQLException sqle)
      {
  sqle.printStackTrace();//打印错误栈内容
      }
        catch (ClassNotFoundException es)
          {
         es.printStackTrace();//打印错误栈内容
            }
}
    }
               //播放音乐
if (e.getSource()==music)  
  {
MediaPlayer1 mediaPlayer = new MediaPlayer1("简单媒体播放器");
mediaPlayer.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);


}
             //保存文件
if (e.getSource()==save)  
{
f5.setSize(280, 150);//框架的宽和高
   f5.setLocation(50, 140);//窗口左上角的坐标
f5.setVisible(true);
  }
     //保存到数据库里
    if(e.getSource()==mysql)
{
Date d1=new Date();//根据当前的时间获取Date对象d1
   SimpleDateFormat f2=new SimpleDateFormat("yyyy年MM月dd日hh时mm分");//获取现在的时间 
tf1.setText(f2.format(d1));//在时间栏里显示时间
            //与数据库连接并发送记事本上的相关数据  
           String sql1="insert into Notepad values('"+ta.getText()+"','"+tf1.getText()+"','"
                +tf5.getText()+"','"+tf6.getText()+"','"+tf7.getText()+"','"+tf8.getText()+"')";//定义SQL语句,向notepad中添加记事本的内容
           String sql2="select * from Notepad";//定义SQL语句
       try
         {  
      Class.forName("com.mysql.jdbc.Driver");//加载驱动程序
      Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/xiao","root","123");//建立数据库链接
      Statement stmt=conn.createStatement();//建立连接声明 
      stmt.executeUpdate(sql1);//执行sql1语句,不需要使用执行后的结果,所以没使用ResultSet语句
      ResultSet rs=stmt.executeQuery(sql2);//执行sql2语句,并需要使用其结果
      conn.close();//关闭数据库连接
         }
   catch(SQLException sqle)
     {
sqle.printStackTrace();//打印错误栈内容
    }
        catch (ClassNotFoundException es)
          {
         es.printStackTrace();//打印错误栈内容
            }
String m7="感谢您对本数据库的支持,O(∩_∩)O谢谢!";
JOptionPane.showMessageDialog(f5, m7, "感谢",JOptionPane.PLAIN_MESSAGE);//两个窗口显示两个不同的内容
f5.dispose();//保存窗口关闭
ta.setText("");
}
 //保存到计算机里
 if(e.getSource()==computer)
{
   fd = new FileDialog(f2, "Save", FileDialog.SAVE);//弹出保存对话框
fd.setVisible(true);//对话框可见
if ((fd.getDirectory()!=null) && (fd.getFile()!=null))//如果不为空 
{
file = new File(fd.getDirectory(), fd.getFile());
save(file); //保存文件
}
f5.dispose();//保存窗口关闭
ta.setText("");
}
         //同时保存到数据库和计算机里
if(e.getSource()==two)
{     
      //保存
 fd = new FileDialog(f2, "Hold", FileDialog.SAVE);//弹出保存对话框
     fd.setVisible(true);//对话框可见
if ((fd.getDirectory()!=null) && (fd.getFile()!=null))//如果不为空 
{
file = new File(fd.getDirectory(), fd.getFile());
save(file); //保存文件
}
 
              Date d=new Date(); //根据当前的时间获取Date对象d
     SimpleDateFormat f2=new SimpleDateFormat("yyyy年MM月dd日hh时mm分");//获取现在的时间 
 tf1.setText(f2.format(d));//在时间栏里显示时间
    //与数据库连接并发送记事本上的相关数据  
           String sql1="insert into Notepad values('"+ta.getText()+"','"+tf1.getText()+"','"+tf5.getText()
          +"','"+tf6.getText()+"','"+tf7.getText()+"','"+tf8.getText()+"')";//定义SQL语句,向notepad中添加记事本的内容
           String sql2="select * from Notepad";//定义SQL语句
       try
         {  
      Class.forName("com.mysql.jdbc.Driver");//加载驱动程序
      Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/xiao","root","123");//建立数据库链接
      Statement stmt=conn.createStatement();//建立连接声明 
      stmt.executeUpdate(sql1);//执行sql1语句,不需要使用执行后的结果,所以没使用ResultSet语句
      ResultSet rs=stmt.executeQuery(sql2);//执行sql2语句,并使用其结果
      conn.close();//关闭数据库连接
         }
   catch(SQLException sqle)
     {
sqle.printStackTrace();//打印错误栈内容
    }
        catch (ClassNotFoundException es)
          {
         es.printStackTrace();//打印错误栈内容
            }
 f5.dispose();//保存窗口关闭
 ta.setText("");
 } //保存结束 
   //新建
if(e.getSource()==newfile)
{
   ta.setText("");
Date d1=new Date();//根据当前的时间获取Date对象d1
       SimpleDateFormat f2=new SimpleDateFormat("yyyy年MM月dd日\n");//获取现在的时间    
       ta.setText(f2.format(d1));//在文本框中显示时间
}
         //软件的相关介绍
   if (e.getSource()==information)
{
String m5= "这是一款多功能的记事本软件,给你不一般视觉享受,你  值得拥有!";
String m6="--------版权所有,欢迎使用!-------筱";
JOptionPane.showMessageDialog(f2, m5, "炒作",JOptionPane.PLAIN_MESSAGE);//两个窗口显示两个不同的内容 
JOptionPane.showMessageDialog(f2, m6, "作者",JOptionPane.PLAIN_MESSAGE);
      }
           //相册窗口中的返回事件
if (e.getSource()==back) 

f3.dispose();//关闭相册窗口
f2.setSize(650, 500);//框架的宽和高
   f2.setLocation(150, 140);//窗口左上角的坐标
f2.setVisible(true);
}
       //相册事件
 if(e.getSource()==photos)
       { f2.dispose();//关闭记事本窗口
f3.setSize(650, 450);//框架的宽和高
f3.setLocation(210, 140);//窗口左上角的坐标
f3.setVisible(true);
  }
             //时间事件
 if(e.getSource()==date)
      {    
Date d1=new Date();//根据当前的时间获取Date对象d1
SimpleDateFormat f2=new SimpleDateFormat("yyyy年MM月dd日hh时mm分");//获取现在的时间    
tf1.setText(f2.format(d1));//在时间栏里显示时间
 }
}
 }
顶 1踩 1收藏
文章评论
    发表评论

    个人资料

    • 昵称: 筱yu尚
    • 等级: 初级程序员
    • 积分: 94
    • 代码: 1 个
    • 文章: 1 篇
    • 随想: 0 条
    • 访问: 2 次
    • 关注

    人气文章

    人气代码

    最新提问

      站长推荐