将整数数组排序并显示到 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 中执行某些逻辑时,这就是问题所在。
你正在做的是:
- 创建一个
List<JTextField>
和一个具有相同 JTextField
的 JPanel。
- 根据 JTextField
的值对 List
进行排序
您没有做的是用新命令重建 JPanel。 JPanel 不关心 List
的顺序,因此您可以随机播放它,它不会更新视图。如果您更改 JtextField
实例的值,这是不同的,因为它们共享相同的实例。
我需要将动态冒泡排序的整数数组显示到 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 中执行某些逻辑时,这就是问题所在。
你正在做的是:
- 创建一个
List<JTextField>
和一个具有相同JTextField
的 JPanel。 - 根据 JTextField 的值对
List
进行排序
您没有做的是用新命令重建 JPanel。 JPanel 不关心 List
的顺序,因此您可以随机播放它,它不会更新视图。如果您更改 JtextField
实例的值,这是不同的,因为它们共享相同的实例。