Java свинг для клиента - PullRequest
       2

Java свинг для клиента

0 голосов
/ 12 января 2012

Привет, друзья! Я создаю программное обеспечение для управления интернет-кафе на Java-свинге, где я хочу выйти из Java-программы (окно приветствия на свинге) на клиентской машине с сервера.окно свинга не видно. Я могу закрыть его с сервера, но я хочу, чтобы окно свинга было видно, когда клиент компилирует и запускает код, и закрывается, когда я запускаю команду закрытия с сервера, возможно ли

    import java.net.*;
import java.io.*;

public class cl extends javax.swing.JFrame {

    /** Creates new form cl */
    public cl() {


    initComponents();
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jLabel5 = new javax.swing.JLabel();
    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setBackground(new java.awt.Color(255, 204, 204));

    jPanel1.setBackground(new java.awt.Color(255, 204, 204));

    jLabel5.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\new-1.jpg")); // NOI18N

    jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
    jLabel1.setText("Welcome to our cafe");

    jLabel2.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    jLabel2.setText("Contact Administrator to start your session");

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jLabel5)
            .addGroup(jPanel1Layout.createParallelGroup
   (javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(92, 92, 92)
                    .addComponent(jLabel1))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(42, 42, 42)
                    .addComponent(jLabel2)))
            .addContainerGap(872, Short.MAX_VALUE))
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addGroup(jPanel1Layout.createParallelGroup
(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jLabel5))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(32, 32, 32)
                    .addComponent(jLabel1)
                    .addGap(18, 18, 18)
                    .addComponent(jLabel2)))
            .addContainerGap(597, Short.MAX_VALUE))
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 
         javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,  
       javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)      


    );

    pack();
}// </editor-fold>

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {


try
    {

    String s1,s2;
    Socket s=new Socket("192.168.1.2",1024);
                  DataInputStream dis=new DataInputStream(s.getInputStream());
    DataOutputStream dos=new DataOutputStream(s.getOutputStream());
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

    while(true)
    {



s1=dis.readUTF();

if (s1.equals("5"))
{
System.exit(0);
}
    }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel1;
// End of variables declaration

}

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Проблема в том, что вы никогда не создаете фрейм в методе main ().

Добавьте этот код в ваш метод main:

public static void main(String args[]) {
    cl frame = new cl();
    cl.setSize(640,480);
    cl.setVisible(true);
    // rest of code follows...

Тогда появится фрейм.

Возможно, вы захотите выяснить, хотите ли вы, чтобы пользователь мог закрыть фрейм, и JFrame.setDefaultCloseOperation (int)

Я бы также предложил вам рассмотреть Java RMI , а не ваш собственный протокол.RMI может дать вам гораздо больше возможностей / возможностей без необходимости заниматься сетевым программированием вручную.RMI также будет означать, что вам не нужно будет запускать прослушивание в отдельном потоке: RMI справится с этим за вас.

1 голос
/ 12 января 2012

вероятно, не ответы на ваш вопрос, пожалуйста

1) не использовать сгенерированный код из NetBeans, используйте стандартные компоненты Swing JComponents

2) искать правильный LayoutManager , потому что сложно управлять кучей кода, сгенерированного GroupLayout

3) перенаправить Socket на фоновую задачу, используйте SwingWorker , Runnable # Thread , в противном случае графический интерфейс будет зависать до тех пор, пока последний не закончится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...