将整数数组排序并显示到 JPanel 中

Sort and Display an Array of Integers into a 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));
        }
    }
}
    }

这就是界面的样子。

当您在 GUI 中执行某些逻辑时,这就是问题所在。

你正在做的是:

  1. 创建一个 List<JTextField> 和一个具有相同 JTextField 的 JPanel。
  2. 根据 JTextField
  3. 的值对 List 进行排序

您没有做的是用新命令重建 JPanel。 JPanel 不关心 List 的顺序,因此您可以随机播放它,它不会更新视图。如果您更改 JtextField 实例的值,这是不同的,因为它们共享相同的实例。