我有一个Java服务器线程,它从数据库中检索数据并将它们发送到我的客户端。主客户端GUI由JTabbedPane
表示,我希望每个选项卡(JPanel
s)都能接收自己的数据并显示它们(例如,主页面板,购买面板,配置文件面板等)。
我所做的是将ObjectInput / Output流传递给每个面板,让他接收数据并通过从主类调用面板对象上的getAndSet
方法来更新它们(见下文)。这是正确的做法吗?
以下是我的某个面板的示例
public class PurchasesPanel extends JPanel {
private JTable table;
private JScrollPane scrollPane;
private ObjectInputStream input;
private ObjectOutputStream output;
private static final String PANEL_ID = "purchases";
public PurchasesPanel(ObjectInputStream input, ObjectOutputStream output) {
this.output = output;
this.input = input;
createGUI();
}
public void createGUI() {
//Impostazione del layout e creazione della tabella
setLayout(new BorderLayout());
table = new JTable();
scrollPane = new JScrollPane(table);
add(scrollPane);
}
public void getAndSetTableModel() {
try {
output.writeUTF(PANEL_ID);
output.flush();
DefaultTableModel model = (DefaultTableModel) input.readObject();
table.setModel(model);
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Si è verificato un errore con il pannello riepilogo acquisti. ");
}
}
}