2012-04-03 37 views
0

我相信這只是一個小錯誤,但我找不到它。當我啓動服務器GUI時,其中的組件不會顯示。我所得到的是一個空白的白頁,尺寸正確。擺動:GUI不顯示我的組件

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(); 
+0

1)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)(而不是300多行代碼,指向更多的自定義類)。 2)這聽起來像是阻止EDT的效果。不要阻塞EDT(Event Dispatch Thread) - 當發生這種情況時,GUI將「凍結」。而不是調用 'Thread.sleep(n)'實現一個Swing'Timer'用於重複執行任務或者一個'SwingWorker'執行長時間運行的任務。 有關更多詳細信息,請參見[併發中的Swing](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。 – 2012-04-04 04:28:37

+0

請學習java命名約定並堅持使用它們 – kleopatra 2012-04-04 11:20:46

回答

0

正如我可以看到這個代碼與NetBeans產生..重新設計網頁,因爲它是阻力的問題,並刪除和複製功能:-only業務功能在適當的地方..要小心你在哪裏放置業務功能,因爲如果你把它放在錯誤的地方,那麼你可能會再次遇到同樣的問題。例如..如果u是一個聽者低於

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

給出編寫代碼,然後 是正確的。在這裏需要注意的一點是,你在一個方法中包裝了你的代碼,並從你打算從中調用它的地方調用該方法。

和你可以小心答覆張貼在吉米。我覺得通過這段代碼並找出問題會浪費大量的時間。它的拖放問題。

還要記住,沒有組件應該重疊,應該沒有額外的組件已被刪除,但他們的內存尚未釋放。

1

這是很多的代碼,並使用NetBeans :)我可以當場唯一的缺點之一是,你應該叫initComponents();打電話之前setVisible(true);

此外,還要確保你沒有趕上你的任何異常的閱讀要創建日誌文件(或添加printlines)

1

看來你在一個線程上做了初始化,但是在另一個線程上調用了setVisible方法(在構造函數中包裝了invokeLater)。從事件分派器線程以外的線程調用UI的東西通常是不好的方法,更不用說產生競爭條件了。嘗試從構造函數中刪除invokeLater,幷包裹initalization代替:

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(); 
    } 
};