监听调用客户端组件无法显示

javanewp 2020-05-01 02:20:03
protected void do_button_actionPerformed(MouseEvent e) {
JList<Object> lt = (JList<Object>) e.getSource();
int clickCount = e.getClickCount();
if (clickCount == 2) {
@SuppressWarnings("deprecation")
Object[] ob =lt.getSelectedValues();
String s4 = (String) ob[0];
if(s4.equals("服务器")) {
new network();//这是我的客户端类
}

接下来是我的客户端,单独运行客户端无问题,监听调用组件无法显示,服务器显示已连接,也可以通信
public class network {
/**
* @author zhuxiaobu
* 创建局域网通信主界面
*/
private static final long serialVersionUID = -699L;
private JPanel j1;
private JTextArea jt1;
private JTextArea jt2;
protected Socket client = null;
private File sendImageFile = null;
private Image receiveImage = null;
private background back2;
private background back3;
protected DataOutputStream out1;
protected DataInputStream in1;
private File fe1 = null;
private File fe2 = null;
private Image backImage =null;
private JFrame fm1;
public network() {
init();
jt1.append("尝试连接.........\n");
try {
client = new Socket("127.0.0.1",1609); // 实例化Socket对象
jt1.append("连接成功\n"); // 输出信息
while (true) { // 如果套接字是连接状态
if (client != null && !client.isClosed()) {
out1 = new DataOutputStream(client.getOutputStream());// 获得输出流对象
in1 = new DataInputStream(client.getInputStream());// 获得输入流对象
getServerInfo();
}
else {
client = new Socket("127.0.0.1",1609);
}
}
} catch (Exception e) {
e.printStackTrace(); // 输出异常信息
}
}
private void getServerInfo() {
try {
String name = in1.readUTF();
long length = in1.readLong();
byte[] b1 = new byte[(int)length];// 创建字节数组
for(int i=0;i<length;i++) {
b1[i]=in1.readByte();
}
if(name.equals("String")) {
String s1 = new String(b1);
jt1.append("服务器:"+s1+"\n");
}
else if(name.equals("Image")) {
receiveImage =new ImageIcon(b1).getImage();
back2.setImage(receiveImage);
back2.repaint();
}
else {
FileDialog dialog = new FileDialog(fm1, "保存");// 创建对话框
dialog.setMode(FileDialog.SAVE);// 设置对话框为保存对话框
dialog.setFile(name);
dialog.setVisible(true);// 显示保存对话框
String path = dialog.getDirectory();// 获得文件的保存路径
String newFileName = dialog.getFile();// 获得保存的文件名
if (path == null || newFileName == null) {
return;
}
String pathAndName = path + "\\" + newFileName;// 文件的完整路径
FileOutputStream fOut = new FileOutputStream(pathAndName);
fOut.write(b1);
fOut.flush();
fOut.close();
jt1.append("文件接收完毕。");
}
} catch (Exception e) {
} finally {
try {
if (in1 != null) {
in1.close();// 关闭流
}
if (client != null) {
client.close(); // 关闭套接字
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void init() {
fm1 = new JFrame();
fm1.setTitle("客户端");
fm1.setResizable(false);
fm1.setBounds(200,200,610,510);
j1 = new JPanel();
j1.setLayout(new BorderLayout(0,0));
j1.setBorder(new EmptyBorder(5, 5, 5, 5));
Container c1 = fm1.getContentPane();
c1.add(j1,BorderLayout.CENTER);
JPanel j2 = new JPanel();
Dimension di1 = new Dimension(600,60);
j2.setPreferredSize(di1);
j1.add(j2,BorderLayout.NORTH);
background back1 = new background();
back1.setImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/background1.jpg")));
j2.setLayout(new BorderLayout(0,0));
j2.add(back1,BorderLayout.CENTER);
JPanel j3 = new JPanel();
Dimension di2 = new Dimension(480,260);
j3.setPreferredSize(di2);
j3.setLayout(new BorderLayout(0,0));
j1.add(j3,BorderLayout.CENTER);
jt1 = new JTextArea();
JScrollPane js1 = new JScrollPane(jt1);
jt1.setLineWrap(true);
j3.add(js1,BorderLayout.CENTER);
JPanel j4 = new JPanel();
Dimension di3 = new Dimension(480,150);
j4.setPreferredSize(di3);
j4.setLayout(new BorderLayout(0,0));
j1.add(j4,BorderLayout.SOUTH);
JPanel j5 = new JPanel();
Dimension di4 = new Dimension(480,30);
j5.setPreferredSize(di4);
j5.setBorder( new LineBorder(Color.black));
j5.setLayout(new FlowLayout(FlowLayout.LEFT));
j4.add(j5,BorderLayout.NORTH);
JButton btn2 = new JButton("字体");
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 显示颜色选择对话框
JFontChooser one = new JFontChooser(new Font("方正舒体", Font.BOLD, 18), new Color(204,102,255));
// JFontChooser one = new JFontChooser(); //无参
one.showDialog(null,500,200);
//获取选择的字体
Font font=one.getSelectedfont();
//获取选择的颜色
Color color=one.getSelectedcolor();
if(font!=null&&color!=null){
jt2.setFont(font);
jt2.setForeground(color);
}}
});
j5.add(btn2);
JButton btn3 = new JButton("形象选择");
j5.add(btn3);
btn3.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
JFileChooser jc1 = new JFileChooser();
FileFilter ff1 = new FileNameExtensionFilter("图片","JPG","JPEG","PNG","BMP") ;
jc1.setFileFilter(ff1);
int flag = jc1.showOpenDialog(null);// 显示打开对话框
if (flag == JFileChooser.APPROVE_OPTION) {//批准选择
fe1 = jc1.getSelectedFile(); // 获取选中图片的File对象
}
if (fe1 != null) {
try {
backImage = ImageIO.read(fe1);// 构造BufferedImage对象
if(backImage !=null) {
back3.setImage(backImage);
back3.repaint();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
JButton btn4 = new JButton("发送图片");
btn4.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
selectImage frame = new selectImage();
frame.setVisible(true);

}
});
j5.add(btn4);
JButton btn5 = new JButton("发送文件");
btn5.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
FileFrame f5 = new FileFrame();
f5.setVisible(true);
}
});
j5.add(btn5);
jt2 = new JTextArea();
Dimension di5 = new Dimension(480,90);
jt2.setLineWrap(true);
JScrollPane js2 = new JScrollPane(jt2);
js2.setPreferredSize(di5);
j4.add(js2,BorderLayout.CENTER);
JPanel j7 = new JPanel();
Dimension di7 = new Dimension(480,30);
j7.setPreferredSize(di7);
j4.add(j7,BorderLayout.SOUTH);
j7.setLayout(null);
JButton btn1 = new JButton("发送");
btn1.setBounds(400, 0, 80, 30);
j7.add(btn1);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String s1 = jt2.getText();
out1.writeUTF("String");
byte b2[] = s1.getBytes();
long length = b2.length;
out1.writeLong(length);
out1.write(b2);// 将字节数组写入输出流
jt2.setText("");
jt1.append("客户端:"+s1+"\n");
out1.flush();
out1.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
JPanel j6 = new JPanel();
Dimension di6 = new Dimension(120,440);
j6.setPreferredSize(di6);
j6.setLayout(new GridLayout(2,1,0,0));
j1.add(j6,BorderLayout.EAST);
JPanel j8 = new JPanel();
j8.setLayout(new BorderLayout());
j6.add(j8);
back2 = new background();
back2.setImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/background2.png")));
JLabel l3 = new JLabel("服务器发来的图片");
j8.add(l3,BorderLayout.NORTH);
j8.add(back2,BorderLayout.CENTER);
JPanel j9 = new JPanel();
j9.setLayout(new BorderLayout());
j6.add(j9);
back3 = new background();
back3.setImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/background3.jpg")));
JLabel l4 = new JLabel("背景");
j9.add(l4,BorderLayout.NORTH);
j9.add(back3,BorderLayout.CENTER);
fm1.setVisible(true);
}
...全文
65 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧