登录按钮按下后,新弹出的窗口panel上的所有东西都无法显示,但是我把这部分代码新弄个程序就可以正常显示,请问这是为什么?
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.*;import java.net.Socket;import javax.swing.*;
class ClientGUI {
//声明私有成员变量
private JFrame myFrame;
//构造方法
public ClientGUI()
{
//初始化myFrame
state=false;
myFrame=new JFrame();
myFrame.setSize(400, 150);
myFrame.setTitle("Client");
JLabel userLabel=new JLabel("用户名");
JLabel pswLabel=new JLabel("密码");
userText=new JTextField("");
pswField=new JPasswordField();
JButton signButton=new JButton("登陆");
JButton exitButton=new JButton("退出");
JPanel centerPanel=new JPanel();
centerPanel.setLayout(new GridLayout(2,2));
centerPanel.add(userLabel);
centerPanel.add(userText);
centerPanel.add(pswLabel);
centerPanel.add(pswField);
//centerPanel.add(signButton);
//centerPanel.add(exitButton);
JPanel southPanel=new JPanel();
southPanel.add(signButton);
southPanel.add(exitButton);
myFrame.add(southPanel,BorderLayout.SOUTH);
myFrame.add(centerPanel,BorderLayout.CENTER);
SignAction login=new SignAction();
ExitAction exit=new ExitAction();
signButton.addActionListener(login);
exitButton.addActionListener(exit);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
} private class SignAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String userString=userText.getText();
String pswString=new String(pswField.getPassword());
//state=true;
try{
//连接至服务器端
Socket client=new Socket("127.0.0.1",2009);
System.out.println("已连接端口"+client.getPort()+"。本地端口"+client.getLocalPort());
//向服务器发送
//OutputStream out=client.getOutputStream();
InputStream inStream=client.getInputStream();
//OutputStream out=client.getOutputStream();
Scanner in=new Scanner(inStream);
//BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
//DataInputStream in = new DataInputStream(client.getInputStream());
PrintWriter out=new PrintWriter(client.getOutputStream(),true);
out.println(userText.getText());
out.println(pswField.getPassword());
//读取服务器发来的每行消息 while(in.hasNextLine())
{
line=in.nextLine();
System.out.println(line);
if(line.equals("Welcome to TCP"))
//step1=false;
{
myFrame.setVisible(false);
sendFrameGUI subFrame=new sendFrameGUI();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
private class ExitAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
}
private JTextField userText;
private JPasswordField pswField;
public Boolean state;
public String line;}
//sendFrame
class sendFrameGUI extends JFrame{
//private JFrame sendFrame;
public sendFrameGUI(){
//sendFrame=new JFrame();
//sendFrame.setSize(500,200);
//sendFrame.setLocation(500,500);
//sendFrame.setTitle("请输入发送内容");
JPanel sendPanelC=new JPanel();
JLabel sendLabel=new JLabel("发送内容:");
JTextField sendText=new JTextField();
sendPanelC.setLayout(new GridLayout(2,1));
sendPanelC.add(sendLabel);
sendPanelC.add(sendText);
JPanel panel=new JPanel();
panel.setLayout(new BorderLayout());
panel.add(sendPanelC,BorderLayout.PAGE_END);
setTitle("请输入发送内容");
setVisible(true);
setSize(500,200);
this.getContentPane().add(panel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //sendFrame.add(sendPanelC,BorderLayout.CENTER);
//JPanel sendPanelS=new JPanel();
//JButton sendButton=new JButton("发送");
//sendPanelS.add(sendButton);
//sendFrame.add(sendPanelS,BorderLayout.SOUTH);
//sendFrame.setDefaultCloseOperation(sendFrame.EXIT_ON_CLOSE);
//sendFrame.setVisible(true);
}
}
无论怎么改都是下面这情况,谁能告诉我哪里错了?
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.*;import java.net.Socket;import javax.swing.*;
class ClientGUI {
//声明私有成员变量
private JFrame myFrame;
//构造方法
public ClientGUI()
{
//初始化myFrame
state=false;
myFrame=new JFrame();
myFrame.setSize(400, 150);
myFrame.setTitle("Client");
JLabel userLabel=new JLabel("用户名");
JLabel pswLabel=new JLabel("密码");
userText=new JTextField("");
pswField=new JPasswordField();
JButton signButton=new JButton("登陆");
JButton exitButton=new JButton("退出");
JPanel centerPanel=new JPanel();
centerPanel.setLayout(new GridLayout(2,2));
centerPanel.add(userLabel);
centerPanel.add(userText);
centerPanel.add(pswLabel);
centerPanel.add(pswField);
//centerPanel.add(signButton);
//centerPanel.add(exitButton);
JPanel southPanel=new JPanel();
southPanel.add(signButton);
southPanel.add(exitButton);
myFrame.add(southPanel,BorderLayout.SOUTH);
myFrame.add(centerPanel,BorderLayout.CENTER);
SignAction login=new SignAction();
ExitAction exit=new ExitAction();
signButton.addActionListener(login);
exitButton.addActionListener(exit);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
} private class SignAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String userString=userText.getText();
String pswString=new String(pswField.getPassword());
//state=true;
try{
//连接至服务器端
Socket client=new Socket("127.0.0.1",2009);
System.out.println("已连接端口"+client.getPort()+"。本地端口"+client.getLocalPort());
//向服务器发送
//OutputStream out=client.getOutputStream();
InputStream inStream=client.getInputStream();
//OutputStream out=client.getOutputStream();
Scanner in=new Scanner(inStream);
//BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
//DataInputStream in = new DataInputStream(client.getInputStream());
PrintWriter out=new PrintWriter(client.getOutputStream(),true);
out.println(userText.getText());
out.println(pswField.getPassword());
//读取服务器发来的每行消息 while(in.hasNextLine())
{
line=in.nextLine();
System.out.println(line);
if(line.equals("Welcome to TCP"))
//step1=false;
{
myFrame.setVisible(false);
sendFrameGUI subFrame=new sendFrameGUI();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
private class ExitAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
}
private JTextField userText;
private JPasswordField pswField;
public Boolean state;
public String line;}
//sendFrame
class sendFrameGUI extends JFrame{
//private JFrame sendFrame;
public sendFrameGUI(){
//sendFrame=new JFrame();
//sendFrame.setSize(500,200);
//sendFrame.setLocation(500,500);
//sendFrame.setTitle("请输入发送内容");
JPanel sendPanelC=new JPanel();
JLabel sendLabel=new JLabel("发送内容:");
JTextField sendText=new JTextField();
sendPanelC.setLayout(new GridLayout(2,1));
sendPanelC.add(sendLabel);
sendPanelC.add(sendText);
JPanel panel=new JPanel();
panel.setLayout(new BorderLayout());
panel.add(sendPanelC,BorderLayout.PAGE_END);
setTitle("请输入发送内容");
setVisible(true);
setSize(500,200);
this.getContentPane().add(panel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //sendFrame.add(sendPanelC,BorderLayout.CENTER);
//JPanel sendPanelS=new JPanel();
//JButton sendButton=new JButton("发送");
//sendPanelS.add(sendButton);
//sendFrame.add(sendPanelS,BorderLayout.SOUTH);
//sendFrame.setDefaultCloseOperation(sendFrame.EXIT_ON_CLOSE);
//sendFrame.setVisible(true);
}
}
无论怎么改都是下面这情况,谁能告诉我哪里错了?
getContentPane().validate()试试