2017-03-16 33 views
0

我需要顯示一個動態的泡泡排序數組到一個JPanel中,但是在排序數組後,它不會顯示在JPanel中,我很新編程,所以這可能是一個新手的錯誤。排序並顯示一個整型數組到一個JPanel

這是我到目前爲止的代碼。

import java.util.ArrayList; 
import java.util.List; 
import javax.swing.JTextField; 
public class exH extends javax.swing.JFrame { 
private List<JTextField> arrayA; 
private List<JTextField> temp; 
int n=0; 

public exH() { 
     initComponents(); 
     arrayA=new ArrayList(); 
     temp=new ArrayList(); 
    } 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
n=Integer.parseInt(a.getText()); 
panel.removeAll(); 
arrayA.clear(); 
for (int i=0;i<n;i++){ 
    JTextField txt =new JTextField(); 
    panel.add(txt); 
    arrayA.add(txt); 
    panel.updateUI(); 
} 
a.setText(""); 
     // TODO add your handling code here: 
    }           

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
for (int i=0;i<n-1;i++){ 
    for (int j=0;j<n-1;i++){ 
     int conv1 = Integer.parseInt(String.valueOf(arrayA.get(j))); 
     int conv2 = Integer.parseInt(String.valueOf(arrayA.get(j+1))); 
     if (conv1>conv2){ 
      temp.set(0,arrayA.get(j+1)); 
      arrayA.set(j+1,arrayA.get(j)); 
      arrayA.set(j,temp.get(0)); 
     } 
    } 
} 
    } 

這就是界面的樣子。

JFrame Looking

+0

嗨,歡迎來到SO。我可能會建議你縮進你的代碼,嚴重縮進的代碼很難閱讀(所以它降低了你得到答案的機會) – 2017-03-16 06:45:59

+0

_「但是在我對數組進行排序後,它不會顯示在JPanel中_」你只能改變列表中實例的順序,而不是JPanel中的實例順序。所以你應該重新整理面板後,你已經排序陣列 – AxelH

回答

0

這是問題,當你在GUI做一些邏輯。

什麼你正在做的是:

  1. 創建List<JTextField>和一個JPanel具有相同JTextField。基於對JTextField的

你沒有做什麼價值

  • 排序List是重建的JPanel新秩序。 JPanel不關心List的順序,所以你可以隨機播放它,它不會更新視圖。如果更改JtextField實例的值,則這是不同的,因爲它們共享相同的實例。

  • +0

    謝謝!我會仔細看看的。 – wasp66955

    相關問題