从多个 JTextFields 读入数组
Reading from multiple JTextFields into array
我正在研究最短路径算法,想为我的程序创建一个 gui 版本。这是我创建字段以输入顶点之间距离的方法。当所有 JTextFields 都填满后,我想将其全部转换为二维数组,这就是我的问题。如果它们都是在同一个变量上创建的,那么如何从 n 个 JTextFields 中读取所有值,在我的例子中是 tekst。
void Wypelnij() {
int n = 1;
int x = 0;
for (int i = 1; i <= wierzcholki; i++) {
if (x == 0) {
mojPanel.add(new JLabel(""));
for (int j = 1; j <= wierzcholki; j++) {
if (n == wierzcholki) {
mojPanel.add(new JLabel("" + j), "wrap");
n = 1;
x = 1;
} else {
mojPanel.add(new JLabel("" + j));
n++;
}
}
}
mojPanel.add(new JLabel("" + i));
for (int j = 1; j <= wierzcholki; j++) {
JTextField tekst = new JTextField();
tekst.setPreferredSize(new Dimension(20, 20));
if (n == wierzcholki) {
mojPanel.add(tekst, "wrap");
n = 1;
} else {
mojPanel.add(tekst);
n++;
}
if (i == j) {
tekst.setText("0");
tekst.setHorizontalAlignment(JTextField.CENTER);
tekst.setEditable(false);
}
}
}
您可以创建一个 List<JTextField>
并遍历该列表以从所有 JTextFields
中获取文本。
另一种方法是,您可以使用 Components[] JPanel#getComponents()
获取面板( 即 容器)的所有组件并遍历组件以从 JTextFields
.但在这种情况下,您的面板可能包含其他组件(最好为 JTextFields
使用单独的面板)而且您需要将 Component
转换为 JTextField
.但是,您可以根据您在面板中添加 JTextFields
的 indexes 迭代 Components[]
。
我正在研究最短路径算法,想为我的程序创建一个 gui 版本。这是我创建字段以输入顶点之间距离的方法。当所有 JTextFields 都填满后,我想将其全部转换为二维数组,这就是我的问题。如果它们都是在同一个变量上创建的,那么如何从 n 个 JTextFields 中读取所有值,在我的例子中是 tekst。
void Wypelnij() {
int n = 1;
int x = 0;
for (int i = 1; i <= wierzcholki; i++) {
if (x == 0) {
mojPanel.add(new JLabel(""));
for (int j = 1; j <= wierzcholki; j++) {
if (n == wierzcholki) {
mojPanel.add(new JLabel("" + j), "wrap");
n = 1;
x = 1;
} else {
mojPanel.add(new JLabel("" + j));
n++;
}
}
}
mojPanel.add(new JLabel("" + i));
for (int j = 1; j <= wierzcholki; j++) {
JTextField tekst = new JTextField();
tekst.setPreferredSize(new Dimension(20, 20));
if (n == wierzcholki) {
mojPanel.add(tekst, "wrap");
n = 1;
} else {
mojPanel.add(tekst);
n++;
}
if (i == j) {
tekst.setText("0");
tekst.setHorizontalAlignment(JTextField.CENTER);
tekst.setEditable(false);
}
}
}
您可以创建一个 List<JTextField>
并遍历该列表以从所有 JTextFields
中获取文本。
另一种方法是,您可以使用 Components[] JPanel#getComponents()
获取面板( 即 容器)的所有组件并遍历组件以从 JTextFields
.但在这种情况下,您的面板可能包含其他组件(最好为 JTextFields
使用单独的面板)而且您需要将 Component
转换为 JTextField
.但是,您可以根据您在面板中添加 JTextFields
的 indexes 迭代 Components[]
。