摇摆问题!(显示框架的问题)

时间:2010-01-13 12:33:36

标签: java swing networking

抱歉发布了很多代码!!我不知道为什么我的ListFrame不起作用??? 这些是类。首先我运行MainServer然后我将在另一个包中运行MainFrame。然后通过插入正确的用户名和密码,将显示Listframe,但是我点击菜单栏或列表或删除按钮但什么都不会发生。为什么?请帮帮我。

MainSerevr课程:

public class MainServer {

static Socket client = null;
static ServerSocket server = null;

public static void main(String[] args) {
    System.out.println("Server is starting...");
    System.out.println("Server is listening...");

    try {
        server = new ServerSocket(5050);
    } catch (IOException ex) {
        System.out.println("Could not listen on port 5050");
        System.exit(-1);

    }
    try {
        client = server.accept();
        System.out.println("Client Connected...");
    } catch (IOException e) {
        System.out.println("Accept failed: 5050");
        System.exit(-1);
    }
    try {
        BufferedReader streamIn = new BufferedReader(new InputStreamReader(client.getInputStream()));

        boolean done = false;
        String line;
        while (!done) {
            line = streamIn.readLine();
            if (line.equalsIgnoreCase(".bye")) {
                done = true;
            } else {
                System.out.println("Client says: " + line);
            }
        }

        streamIn.close();
        client.close();
        server.close();
    } catch (IOException e) {
        System.out.println("IO Error in streams " + e);
    }
}}

ListFrame:

 public class ListFrame extends javax.swing.JFrame implements PersonsModelChangeListener {

    private InformationClass client;
    private static DefaultListModel model = new DefaultListModel();
    private ListSelectionModel moDel;

    /** Creates new form ListFrame */
    public ListFrame(InformationClass client) {
        initComponents();
        this.client = client;
        jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);


        fillTable();
        Manager.addListener(this);
    }

    private void deleteAPerson() {
        int index = jList1.getSelectedIndex();
        String yahooId = (String) jList1.getSelectedValue();
        model.remove(index);
        Manager.removeApersonFromSQL(yahooId);
        int size = model.getSize();
        if (size == 0) {
            jButton1.setEnabled(false);
        } else {
            if (index == size) {
                index--;
            }
            jList1.setSelectedIndex(index);
            jList1.ensureIndexIsVisible(index);

        }
    }                       



  private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        AddAPerson frame = new AddAPerson(client);
        frame.setVisible(true);


    }                                          

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        deleteAPerson();
    }                                        

    private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {                                    
        MainClient.setText("");
        MainClient.runAClient();
        ChatFrame frame = new ChatFrame(client);
        frame.setVisible(true);
    }  
    public void fillTable() {
    try {
        List<InformationClass> list = null;
        list = Manager.getClientListFromMySQL();
        if (list == null) {

            JOptionPane.showMessageDialog(this, "You should add a person to your list", "Information", JOptionPane.OK_OPTION);
            return;
        } else {


            for (int i = 0; i < list.size(); i++) {
                InformationClass list1 = list.get(i);
                model.add(i, list1.getId());
            }

            jList1.setModel(model);
        }


    } catch (SQLException ex) {
        Logger.getLogger(ListFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
}

MainClient类:

public class MainClient {


private static InformationClass info = new InformationClass();
private static Socket c;
private static String text;

public static String getText() {
    return text;
}

public static void setText(String text) {
    MainClient.text = text;
}

private static PrintWriter os;
private static BufferedReader is;
static boolean closed = false;

/**
 * @param args the command line arguments
 */
public static void runAClient() {
    try {
        c = new Socket("localhost", 5050);

        os = new PrintWriter(c.getOutputStream());
        is = new BufferedReader(new InputStreamReader(c.getInputStream()));

        String teXt = getText();
        os.println(teXt);
        if(c!=null&& is!=null&&os!=null){
        String line = is.readLine();
        System.out.println("Text received: " + line);
        }


        c.close();
        is.close();
        os.close();


    } catch (UnknownHostException ex) {
        System.err.println("Don't know about host");

    } catch (Exception e) {
        System.err.println("IOException:  " + e);

    }

}


}
编辑:我发现了问题,这是因为在代码中写了MainClient.runAClient(),我应该把它放在哪里?请帮帮我。

1 个答案:

答案 0 :(得分:1)

article包含一个sscce,它说明了一个简单的客户端 - 服务器GUI。你可能会发现它很有启发性。如果是这样,请考虑如何解决Echo(Kind kind)构造函数的最后一行中发现的错误。