📄 ptp.java
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.io.*;
public class PtP extends JFrame implements ItemListener
{
private Container con;
PtPclient ptp=new PtPclient();
PtPserver ser;
private JPanel
pane1=new JPanel(),
pane2=new JPanel();
private JButton
btn1=new JButton("侦听客户端操作"),
// btn2=new JButton(""),
btn3=new JButton("下载文件"),
btn2=new JButton("建立连接");
private JComboBox jcb=new JComboBox();
public PtP()//构造函数建立一个框架
{
super("点对点传输文件");
this.setSize(260,260);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void setLayout()//界面布局
{
con=this.getContentPane();
pane1.setBorder(new TitledBorder("作为服务端"));
pane1.add(btn1);
//pane1.add(btn2);
btn1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
ser=new PtPserver();
}
});//打开侦听端口函数,启动线程监视客户请求,当接收到用户的具体文件下载请求是,执行send()函数
pane2.setBorder(new TitledBorder("作为客户端"));
// btn2.addActionListener(new ActionListener()
// {
// });//与服务器建立连接,并返回它所共享的目录文件
pane2.add(btn2);
btn2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ptp.ClientLink();
}
}
);
pane2.add(jcb);
jcb.addItemListener(this);
// jcb.addItemListener(this);
pane2.add(btn3);
btn3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
ptp.recv();
}
//这里要处理文件的下载,用到了recv()函数
});
con.add(pane1,BorderLayout.NORTH);
con.add(pane2,BorderLayout.CENTER);
}
private void addItem(){//向组合框添加项目信息
//String[] s;
System.out.println(ptp.sdirect.length);
for(int k=0;k<ptp.sdirect.length;k++)
{
jcb.addItem(ptp.sdirect[k]);
}
}
public void itemStateChanged(ItemEvent e)
{
//System.out.println("dfsad");
//这里处理将所选择的索引送给服务器
if(e.getSource() instanceof JComboBox){
int index=jcb.getSelectedIndex();
ptp.sname=ptp.sdirect[index];
ptp.sendFileName();
}
}
/* private void AddComponent(JPanel panel,GridBagLayout Layout,GridBagConstraints gbc,Component com,int row,int column,int numRows,int numColumns,int Weightx,int Weighty)
{
gbc.gridx=row;//
gbc.gridy=column;//指定组建显示区域左上单元格的坐标
gbc.gridwidth=numRows;
gbc.gridheight=numColumns;//指定组建在行或是列上占用的单元格个数
gbc.weightx=Weightx;
gbc.weighty=Weighty;//分配给组建的外部水平和垂直空间
Layout.setConstraints(com,gbc);
panel.add(com);
//fill 指定当组建超过屏幕时,如何处理大小
//anchor 指定当组建没有填充完全部区域时,它在显示区域的位置
}*/
public static void main(String[] args)
{
PtP p=new PtP();
p.setLayout();
// p.addItem();
p.show(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -