Swing: GUI не показывает мои компоненты - PullRequest
0 голосов
/ 03 апреля 2012

Я уверен, что это просто маленькая ошибка, но я не могу ее найти.Когда я запускаю свой серверный графический интерфейс, компоненты в нем не отображаются.Все, что у меня есть, это пустая белая страница с правильным размером.

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerGUI extends javax.swing.JFrame {

    private ServerSocket server;
    private int port;
    private int numberOfObject;
    private int counter = 1;
    private ObjectClass[] Object;
    private Server bss;
    public static volatile int[] Allocation;

    public void setServerGUI(Server bss, int port, int numberOfObject, ObjectClass[] Object) {
        this.bss = bss;
        this.port = port;
        this.numberOfObject = numberOfObject;
        this.Object = Object;
    }

    public ServerGUI() {

        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(ServerGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(ServerGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(ServerGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(ServerGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                setVisible(true);
            }
        });
        initComponents();

    }

    public void startServing() {
        System.out.println("STARTSERVING");
        try {
            server = new ServerSocket(port);
        } catch (IOException e1) {
            System.out.println("IOException in startServing()");
        }
        while (true) {
            Socket ADClient = null;

            int free=0;
            try {
                ADClient = server.accept();
                for (int j = 0; j < numberOfObject; j++) {
                    if ((Allocation[j] == -1)) {
                        free = j;
                        Allocation[free] = counter;
                    }

                }
                System.out.println("" + Object[free].getNumber());
                new ServerThread(ADClient, counter++, Object[free]).start();


            } catch (IOException e) {
                System.out.println("IOException: server.accept() schlug fehl.");
            }
        }
    }

    /**
     * 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() {

        scrollPaneState1 = new javax.swing.JScrollPane();
        textAreaState1 = new javax.swing.JTextArea();
        scrollPaneServer1 = new javax.swing.JScrollPane();
        textAreaServer1 = new javax.swing.JTextArea();
        scrollPaneState2 = new javax.swing.JScrollPane();
        textAreaState2 = new javax.swing.JTextArea();
        scrollPaneServer2 = new javax.swing.JScrollPane();
        textAreaServer2 = new javax.swing.JTextArea();
        scrollPaneState3 = new javax.swing.JScrollPane();
        textAreaState3 = new javax.swing.JTextArea();
        scrollPaneServer3 = new javax.swing.JScrollPane();
        textAreaServer3 = new javax.swing.JTextArea();
        scrollPaneMain = new javax.swing.JScrollPane();
        textAreaMain = new javax.swing.JTextArea();
        labelNr1 = new javax.swing.JLabel();
        labelNr2 = new javax.swing.JLabel();
        labelNr3 = new javax.swing.JLabel();
        labelStateResponse1 = new javax.swing.JLabel();
        labelStateResponse2 = new javax.swing.JLabel();
        labelStateResponse3 = new javax.swing.JLabel();
        labelServerResponse1 = new javax.swing.JLabel();
        labelServerResponse2 = new javax.swing.JLabel();
        labelServerResponse3 = new javax.swing.JLabel();
        labelMainResponse = new javax.swing.JLabel();
        beendenButton = new javax.swing.JButton();
        backButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Server - Running");

        scrollPaneState1.setEnabled(false);

        textAreaState1.setColumns(20);
        textAreaState1.setRows(5);
        scrollPaneState1.setViewportView(textAreaState1);

        scrollPaneServer1.setEnabled(false);

        textAreaServer1.setColumns(20);
        textAreaServer1.setRows(5);
        scrollPaneServer1.setViewportView(textAreaServer1);

        scrollPaneState2.setEnabled(false);

        textAreaState2.setColumns(20);
        textAreaState2.setRows(5);
        scrollPaneState2.setViewportView(textAreaState2);

        scrollPaneServer2.setEnabled(false);

        textAreaServer2.setColumns(20);
        textAreaServer2.setRows(5);
        scrollPaneServer2.setViewportView(textAreaServer2);

        scrollPaneState3.setEnabled(false);

        textAreaState3.setColumns(20);
        textAreaState3.setRows(5);
        scrollPaneState3.setViewportView(textAreaState3);

        scrollPaneServer3.setEnabled(false);

        textAreaServer3.setColumns(20);
        textAreaServer3.setRows(5);
        scrollPaneServer3.setViewportView(textAreaServer3);

        scrollPaneMain.setEnabled(false);

        textAreaMain.setColumns(20);
        textAreaMain.setRows(5);
        scrollPaneMain.setViewportView(textAreaMain);

        labelNr1.setText("Nr: ");
        labelNr1.setDoubleBuffered(true);

        labelNr2.setText("Nr: ");

        labelNr3.setText("Nr: ");

        labelStateResponse1.setText("State Respone:");

        labelStateResponse2.setText("State Response:");

        labelStateResponse3.setText("State Response:");

        labelServerResponse1.setText("Server Resonse:");

        labelServerResponse2.setText("Server Response:");

        labelServerResponse3.setText("Server Response:");

        labelMainResponse.setText("Main Response:");

        beendenButton.setText("beenden");
        beendenButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                beendenButtonActionPerformed(evt);
            }
        });

        backButton.setText("zurück");
        backButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                backButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(labelNr1)
                                    .addComponent(labelStateResponse1))
                                .addGap(199, 199, 199)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(scrollPaneState2, javax.swing.GroupLayout.PREFERRED_SIZE, 268, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(labelServerResponse2)
                                    .addComponent(labelStateResponse2)
                                    .addComponent(labelNr2))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(scrollPaneState3)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(labelServerResponse3)
                                            .addComponent(labelStateResponse3)
                                            .addComponent(labelNr3))
                                        .addGap(0, 0, Short.MAX_VALUE))))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(scrollPaneServer1)
                                    .addComponent(scrollPaneState1, javax.swing.GroupLayout.PREFERRED_SIZE, 268, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(scrollPaneServer2, javax.swing.GroupLayout.PREFERRED_SIZE, 268, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(scrollPaneServer3))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(labelServerResponse1)
                                .addGap(738, 738, 738))
                            .addComponent(scrollPaneMain)))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addContainerGap()
                                .addComponent(labelMainResponse))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(326, 326, 326)
                                .addComponent(backButton)
                                .addGap(18, 18, 18)
                                .addComponent(beendenButton)))
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(labelNr1)
                    .addComponent(labelNr2)
                    .addComponent(labelNr3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(labelStateResponse1)
                    .addComponent(labelStateResponse2)
                    .addComponent(labelStateResponse3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(scrollPaneState2, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(scrollPaneState1, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(scrollPaneState3, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(labelServerResponse1)
                    .addComponent(labelServerResponse2)
                    .addComponent(labelServerResponse3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(scrollPaneServer2, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(scrollPaneServer1, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(scrollPaneServer3, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelMainResponse)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(scrollPaneMain, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(beendenButton)
                    .addComponent(backButton))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

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

    private void beendenButtonActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0);
    }

    private void backButtonActionPerformed(java.awt.event.ActionEvent evt) {
        bss.setVisible(true);
        this.dispose();
    }

    // Variables declaration - do not modify
    private javax.swing.JButton backButton;
    private javax.swing.JButton beendenButton;
    private javax.swing.JLabel labelNr1;
    private javax.swing.JLabel labelNr2;
    private javax.swing.JLabel labelNr3;
    private javax.swing.JLabel labelMainResponse;
    private javax.swing.JLabel labelServerResponse1;
    private javax.swing.JLabel labelServerResponse2;
    private javax.swing.JLabel labelServerResponse3;
    private javax.swing.JLabel labelStateResponse1;
    private javax.swing.JLabel labelStateResponse2;
    private javax.swing.JLabel labelStateResponse3;
    private javax.swing.JScrollPane scrollPaneMain;
    private javax.swing.JScrollPane scrollPaneServer1;
    private javax.swing.JScrollPane scrollPaneServer2;
    private javax.swing.JScrollPane scrollPaneServer3;
    private javax.swing.JScrollPane scrollPaneState1;
    private javax.swing.JScrollPane scrollPaneState2;
    private javax.swing.JScrollPane scrollPaneState3;
    private javax.swing.JTextArea textAreaMain;
    private javax.swing.JTextArea textAreaServer1;
    private javax.swing.JTextArea textAreaServer2;
    private javax.swing.JTextArea textAreaServer3;
    private javax.swing.JTextArea textAreaState1;
    private javax.swing.JTextArea textAreaState2;
    private javax.swing.JTextArea textAreaState3;
    // End of variables declaration
}

Этот класс вызывается здесь:

ServerGUI bssGUI = new ServerGUI();
bssGUI.setServerGUI(this, 4242, object.length,object);
bssGUI.setVisible(true);
bssGUI.startServing();

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

Похоже, что вы делаете инициализацию в одном потоке, но вызываете метод setVisible в другом потоке (в конструкторе invokeLater).Обычно плохой подход к вызову пользовательского интерфейса из потока, отличного от Event Dispatcher Thread, не говоря уже о результирующих условиях гонки.Попробуйте удалить invokeLater из конструктора и вместо этого обернуть инициализацию:

java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
        ServerGUI bssGUI = new ServerGUI();
        bssGUI.setServerGUI(this, 4242, object.length,object);
        bssGUI.setVisible(true);
        bssGUI.startServing();
    }
};
1 голос
/ 03 апреля 2012

Это много кода, один из недостатков использования NetBeans :) Единственное, что я могу заметить, это то, что вы должны позвонить initComponents();, прежде чем позвонить setVisible(true);

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

0 голосов
/ 03 апреля 2012

Как я вижу, этот код генерируется с помощью NetBeans. Перепроектируйте страницу, так как она заключается в перетаскивании и копировании функциональности: только бизнес-функции в соответствующих местах.бизнес-функции, потому что если вы поставите его не туда, то можете снова столкнуться с этой же проблемой.например ... если вы пишете код для слушателя, то, как указано ниже,

    backButton.addActionListener(new java.awt.event.ActionListener() { 
        public void actionPerformed(java.awt.event.ActionEvent evt) { 
            backButtonActionPerformed(evt); 
        } 
    });

правильно.хорошо отметить, что вы завершили свой код в методе и вызвали этот метод из того места, откуда вы собираетесь его вызывать.

, и вы можете быть осторожны с ответом, опубликованным у Джимми,Я чувствую, что это будет пустой тратой времени, чтобы пройти этот код и выяснить проблему.вопрос перетаскивания.

Также имейте в виду, что ни один компонент не должен перекрываться, и не должно быть никаких дополнительных компонентов, которые были удалены, но их память не была освобождена.

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