2017-05-05 10 views
1

EDIT2:それをテストしました。新しいJPanelには間違いなく問題があります。別のJFrameを開くときにJFrameがスタックする

SOLUTION: として、答えは私が明示的に私のJFrameの上に私のJPanelを設定するのを忘れていることも提案されています。変更:

setContentPane(contentPanetagesliste); 

frame.setContentPane(contentPanetagesliste); 

、それは私の作品に!


問題はJFrameの奇妙な動作です。

私のコードでは、私のMainFrameにradioButtonがあります。押すと、もう一方のフレームが開きます。

私の新しいフレームで私はJPanelを作った。 JPanelを追加する前に、もう一方のフレームがフリーズしなかったので、問題は新しいJPanelと何か関係があると思います。最後に

JPanel contentPanetagesliste; 

contentPanetagesliste = new JPanel(); 

contentPanetagesliste.setBorder(new EmptyBorder(5, 5, 5, 5)); 
setContentPane(contentPanetagesliste); 

私はJPanelのにJScrollPaneのを追加します(つまり、私は1つをしなければならなかった理由だ)とJFrameのが見えるよう。

JScrollPane jsp = new JScrollPane(contentPanetagesliste); 
frame.add(jsp); 


frame.setVisible(true); 

私は絶対に新しいJPanelのは、メインのJFrameまたはMainJFrameの上に横たわっているのJPanelに干渉する可能性がどのよう見当もつかない。あなたの何人かが助けてくれることを願っています。

編集:一部にはっきりしていなかったので、つまらないとは反応が無く、移動すると白い灰色になります。

画像に:右上のラジオボタンを押すと、新しいウィンドウが開き、完全に機能していますが、古いウィンドウが止まっています。

image


追加情報については、私は説明と私のアクションリスナーからの完全なコードを投稿します。

RadioBTNtagesliste.addActionListener (new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     try { 
      if(RadioBTNtagesliste.isSelected() == true){ 
       String Eintrag = HttpClass.httpRequestEintrag(usernamevar,EintragStringPK,"eintragTABLE"); 
       JSONObject jsonObjectEintrag = new JSONObject(Eintrag); 
       int ProjektJSONlength = jsonObjectEintrag.length() - 1; 

       frame.setSize(590, 450); 
       JPanel contentPanetagesliste; 

       contentPanetagesliste = new JPanel(); 

       contentPanetagesliste.setBorder(new EmptyBorder(5, 5, 5, 5)); 
       setContentPane(contentPanetagesliste); 

       double[] temp = new double[ProjektJSONlength+2]; 
       temp[0] = 10; 
       temp[1] = 30; 
       for(int i = 0; i < ProjektJSONlength; i++){ 
        temp[i+2] = 25; 
       } 

       double size[][] = {{2, 90, 90, 90, 90, 90,90, 2}, // Columns 
        temp}; // Rows      
       contentPanetagesliste.setLayout(new TableLayout(size));      
       String label[] = {"Eintrag Nr.", "Projekt", "Aktivität", "Dauer", "Beschreibung", "Symbol"}; 

       JButton button[] = new JButton[label.length]; 
       JTextField textfield[] = new JTextField[label.length]; 

       for (int i = 0; i < label.length; i++) { 
        button[i] = new JButton(label[i]); 
       } 

       contentPanetagesliste.add(button[0], "1, 1"); 
       contentPanetagesliste.add(button[1], "2, 1"); 
       contentPanetagesliste.add(button[2], "3, 1"); 
       contentPanetagesliste.add(button[3], "4, 1"); 
       contentPanetagesliste.add(button[4], "5, 1"); 
       contentPanetagesliste.add(button[5], "6, 1"); 

       EintragStringPK = "Neu";       

       for (int key=0; key<=ProjektJSONlength;key++) { 
        JSONObject jsonObjectProjekteObjekt0 = jsonObjectEintrag.getJSONObject(String.valueOf(key)); 
        String Eintraege = jsonObjectProjekteObjekt0.toString(); 
        String EintragStringDauer = jsonObjectProjekteObjekt0.getString("dauer"); // String auslesen!!!        
        String EintragStringBEschreibung = jsonObjectProjekteObjekt0.getString("beschreibung"); // String auslesen!!!  
        String EintragStringProjektname = jsonObjectProjekteObjekt0.getString("projektname"); // String auslesen!!!        
        String EintragStringAktivitaet = jsonObjectProjekteObjekt0.getString("kategorie"); // String auslesen!!!       
        EintragStringPK = jsonObjectProjekteObjekt0.getString("pk_ei_id"); // String auslesen!!!    

        System.out.println("test" + key); 
        System.out.println(ProjektJSONlength); 
        String labelCONTENT[] = {EintragStringPK, EintragStringProjektname, EintragStringAktivitaet, EintragStringDauer, EintragStringBEschreibung, "Symbol"}; 

        for (int i = 0; i < labelCONTENT.length; i++) { 
         textfield[i] = new JTextField(labelCONTENT[i]); 
        } 
        int keypone = key+2; 
        String keyString = Integer.toString(keypone); 
        contentPanetagesliste.add(textfield[0], "1, "+keyString); 
        contentPanetagesliste.add(textfield[1], "2, "+keyString); 
        contentPanetagesliste.add(textfield[2], "3, "+keyString); 
        contentPanetagesliste.add(textfield[3], "4, "+keyString); 
        contentPanetagesliste.add(textfield[4], "5, "+keyString); 
        contentPanetagesliste.add(textfield[5], "6, "+keyString); 
       } 

       JScrollPane jsp = new JScrollPane(contentPanetagesliste); 
       frame.add(jsp); 
       frame.setVisible(true); 
       System.out.println("ende"); 
      }else{ 
       frame.setVisible(false); 
       System.out.println("ende2");  
      } 
      System.out.println("ende3"); 

     } catch (JSONException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     System.out.println("ende4"); 

    } 
}); 

説明:

私はJFrameの、その後のJPanelを作成します。

SQL DBからのデータを使用して生成されたテーブルを作成することを目的とするため、テーブルに必要な配列と残りの部分を作成します。

また、データを取り出してテーブルフィールドに入れるためのHTTPrequestとループがあります。 まだループしていると、塗りつぶしされたテーブルのフィールドがコンテンツペインに追加され、Jpanel getは彼のJScrollPaneに表示され、フレームは可視に設定されます。

は、私は本当に誰かが私を助けることを願って、あなたがより良い質問をするためのヒントを得た場合、私は開いて耳を持っています。

+1

JTableを作成してJTableをスクロールペインに追加し、スクロールペインをJPanelに、jpanelをJFrameに追加することをお勧めします。 – XtremeBaumer

+0

「スタック」とは、ウィンドウを移動できないことを意味しますか?またはウィンドウが応答しなくなるのですか?ただ、明確 – DCON

+0

のために私はそうでしたが、私はエラーを取得:私はそれが応答しなく – MansNotHot

答えて

0

setContentPane(contentPanetagesliste);は、次のように作成した新しいフレームに明示的に設定する必要があります。frame.setContentPane(contentPanetagesliste);

+0

おかげさまで、あなたの前のコメントが助けになりました。問題を起こしたのは正しく設定されていなかったのです。多分あなたはこれにあなたの答えを変更/編集することができますので、私はそれを受け入れることができますか? :) – MansNotHot

+0

@CoffeineConverter done – XtremeBaumer

関連する問題