Javaでguiを使用してアプリケーションサーバー/クライアントを作成しますが、クラスの構成方法がわかりません。私は、アプリケーションのGUIを作成:guiを使用したアプリケーションサーバー/クライアント
ここでは、コード
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Collection;
public class AziendaGUI implements ActionListener {
private JButton view_list;
private JButton save_list;
private JTextArea text_area;
private JScrollPane scrollpane;
private JPanel pane;
private JFrame frame;
private GridBagLayout grid;
private Azienda company;
public AziendaGUI() {
company = new Azienda();
frame = new JFrame("Immobiliari s.p.a");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
view_list = new JButton("View Property");
view_list.setActionCommand("view_list");
view_list.addActionListener(this);
save_list = new JButton("Save List");
save_list.setActionCommand("save_list");
save_list.addActionListener(this);
text_area = new JTextArea();
scrollpane = new JScrollPane(text_area);
scrollpane.setPreferredSize(new Dimension(250,350));
grid = new GridBagLayout();
pane = new JPanel(grid);
/* Set Constraints view_list button */
grid.setConstraints(view_list, new GridBagConstraints(0,0,1,1,0.0,0.0,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(5,5,5,5),0,0));
pane.add(view_list);
/* Set Constraints save_list button */
grid.setConstraints(save_list,new GridBagConstraints(1,0,1,1,0.0,0.0,GridBagConstraints.EAST,GridBagConstraints.NONE,new Insets(5,5,5,5),0,0));
pane.add(save_list);
/* Set Constraint text area */
grid.setConstraints(scrollpane, new GridBagConstraints(0,1,2,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,5,5),0,0));
pane.add(scrollpane);
frame.setLayout(new FlowLayout());
frame.add(pane);
frame.pack();
frame.setVisible(true);
}
private void viewList(Collection<Immobile> list){
text_area.setText(""); //Evita che venga ripetuto tutto il contenuto
for(Immobile imb : list){
text_area.append(imb.toString()+"\n");
}
}
private void store(){
String file_name = JOptionPane.showInputDialog("Inserisci il nome del file");
company.store(file_name);
}
@Override
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand();
if(s.equals("view_list")){
viewList(company.getImmobili());
}
if(s.equals("save_list")){
store();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){@Override
public void run(){new AziendaGUI();}});
}
}
と私はここにReading from and Writing to a Socket
を説明するように、すべてのメソッドでServerSocket
コンストラクタを実装する必要がありますので、今、このアプリケーションがサーバとして動作する必要があります私の質問は:私は同じクラスAziendaGUIまたは私は別のクラスを作成し、それをAziendaGUIのメインで呼び出す必要があるserver.inを実装する必要がありますか?
私は常に、クライアントクラスを2つの別々のパッケージ、またはより良いプロジェクトでサーバークラスから分離します。確かにそれが些細なクライアント/サーバープロジェクトであれば、すべて単一のプロジェクトになる可能性があります。しかし、確かに別々のパッケージで。あなたのプロジェクトが "myproj"という名前を持っているとすれば、私はクライアントクラスを 'myproj.client'に入れ、サーバクラスは' myproj.server'に入れます。私は強く1つのクラスのすべてを持つことに反対することをお勧めします。 – DejanLekic
しかし、私はどこからサーバークラスを実行しなければならないのか理解できませんでした。メインメソッドはどこですか? – Mazzy
1つのJavaクラスからすべてを実行する場合は、サーバー用のスレッドとクライアント用の1つ以上のスレッドを生成する必要があります。コンストラクタにフラグを設定して、サーバやクライアントとして動作する場所をクラスで知ることができます。 – DejanLekic