Java 摇摆问题!(显示帧时出现问题)
很抱歉发布了很多代码!!我不知道为什么我的列表框不工作??? 这些是类。首先我运行MainServer,然后在另一个包中运行大型机。然后通过插入正确的用户名和密码,将显示列表框,但我单击菜单栏或列表或删除按钮,但什么也不会发生。为什么??请帮帮我 MainSerevr类:Java 摇摆问题!(显示帧时出现问题),java,swing,networking,Java,Swing,Networking,很抱歉发布了很多代码!!我不知道为什么我的列表框不工作??? 这些是类。首先我运行MainServer,然后在另一个包中运行大型机。然后通过插入正确的用户名和密码,将显示列表框,但我单击菜单栏或列表或删除按钮,但什么也不会发生。为什么??请帮帮我 MainSerevr类: public class MainServer { static Socket client = null; static ServerSocket server = null; public static void ma
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);
}
}}
列表框:
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.runAClient(),我应该把它放在哪里?请帮助我。这包含一个演示简单客户机-服务器GUI的示例。你可能会觉得它很有教育意义。如果是这样的话,考虑一下你将如何解决在<代码>最后一行中找到的bug(Apple Type)< /Calp>构造函数。< /P>这段代码甚至没有编译。请将您正在发布的示例代码重新编写到尽可能小但仍可编译的示例中,以显示您遇到问题的行为。另外,请查看有关如何发布正确代码示例的进一步建议。我发现了问题,这是因为在此代码中添加了MainClient.runAClient()。我应该将其放在哪里?我发现了问题,这是因为编写了MainClient.runAClient()方法。你能帮我把这行放在哪里吗?谢谢,我没有办法测试你的代码。通常,在服务器准备好接受新连接后,您可以随时启动客户端线程。在我引用的示例的
main()
方法中,首先启动服务器,然后启动客户机;两者都运行,直到其中一个关闭。
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);
}
}
}