gpt4 book ai didi

java - 如何在构造函数中将 arraylist 或 array 放入 JList 中?

转载 作者:行者123 更新时间:2023-11-30 07:26:05 25 4
gpt4 key购买 nike

我的想法是用 Java swing 制作一个应用程序,其中包含一个登录窗口和一种公司选择器。但我需要从 json url 导入公司列表和 ID,这就是我所做的,但是如何将构造函数中的数组推送到 JList 中?

这是我的主要方法

import java.awt.EventQueue;

public class Main {
public static void main(String[] args) {
LoginWindow loginWindow = new LoginWindow();
loginWindow.setVisible(true);
loginWindow.setSize(500, 400);
//loginWindow.setDefaultCloseOperation(Exit);
}
}

这是我的登录窗口。

import java.awt.*;
import javax.swing.*;

public class LoginWindow extends JFrame {

private JLabel item1;
private JLabel item2;
private JTextField login;
private JPasswordField password;
private JButton loginButton;
private JPanel loginPanel;


GridBagConstraints gbc = new GridBagConstraints();

public static void main(String[] args) {

}

LoginWindow(){
super("MyApp");
setLayout(new GridBagLayout());
gbc.insets = new Insets(5, 5, 5, 5);
item1 = new JLabel("Login");
gbc.gridx = 0;
gbc.gridy = 1;
add(item1, gbc);

item2 = new JLabel("Password");
gbc.gridx = 0;
gbc.gridy = 2;
add(item2, gbc);

login = new JTextField(15);
gbc.gridx = 2;
gbc.gridy = 1;
add(login, gbc);

password = new JPasswordField(15);
gbc.gridx = 2;
gbc.gridy = 2;
add(password, gbc);

loginButton = new JButton("Login");
gbc.gridx = 2;
gbc.gridy = 3;
add(loginButton, gbc);

loginButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
if("admin".equals(password.getText()) &&
"admin".equals(login.getText())){
dispose();
CompanySelectionWindow frame = new CompanySelectionWindow();
frame.setVisible(true);
frame.setSize(500, 300);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
else{
JOptionPane.showMessageDialog(null, "Wrong password or login");
}

}});



}

}

这是 CompanySelectionWindow

import javax.swing.*;
import org.json.*;
import java.awt.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.util.ArrayList;


public class CompanySelectionWindow extends JFrame {

private JLabel label;
private JList list;
//private JList<JSONArray> list = new JList<>();
DefaultListModel<companyInfo> model = new DefaultListModel<>();
GridBagConstraints gbc = new GridBagConstraints();


public CompanySelectionWindow() {
super("Company Selection Window");
//model.addElement(element);
setLayout(new GridBagLayout());
gbc.insets = new Insets(5, 5, 5, 5);
label = new JLabel("Choose company:");
gbc.gridx = 3;
gbc.gridy = 3;
add(label);
**list = new JList(what and how put something here?);**
}

public static void main(String[] args) {
String jsonString = callURL("xxx");
System.out.println("\n\njsonString: " + jsonString);
ArrayList<JSONObject> array = new ArrayList<>();
//String str = "{id:\"123\",name:\"myName\"} {id:\"456\",name:\"yetanotherName\"}{id:\"456\",name:\"anotherName\"}";
String[] strs = jsonString.split("(?<=\\})(?=\\{)");
for (String s : strs) {
System.out.println(s);
}
try {

JSONArray jsonArray = new JSONArray(jsonString);

int count = jsonArray.length(); // get totalCount of all jsonObjects
for(int i=0 ; i< count; i++){ // iterate through jsonArray
JSONObject jsonObject = jsonArray.getJSONObject(i); // get jsonObject @ i position
array.add(i, jsonObject);
System.out.println("jsonObject " + i + ": " + jsonObject);
}

} catch (JSONException e) {
e.printStackTrace();
}


}

public String[] pullArray(String[] a){
return a;
}

public static String callURL(String myURL) {
System.out.println("Requested URL:" + myURL);
StringBuilder sb = new StringBuilder();
URLConnection urlConn = null;
InputStreamReader in = null;

try {
URL url = new URL(myURL);
urlConn = url.openConnection();
if (urlConn != null && urlConn.getInputStream() != null) {
in = new InputStreamReader(urlConn.getInputStream(),
Charset.defaultCharset());
BufferedReader bufferedReader = new BufferedReader(in);
if (bufferedReader != null) {
int cp;
while ((cp = bufferedReader.read()) != -1) {
sb.append((char) cp);
}
bufferedReader.close();
}

}
in.close();
} catch (Exception e) {
throw new RuntimeException("Exception while calling URL:"+ myURL, e);
}

return sb.toString();
}

我尝试用 JSONarray 创建一个 ArrayList 甚至普通数组,并将其推送到 JList(因为我认为它会是正确的方法来做到这一点)。我知道这里的一切都有点乱。我看了几个教程并到处阅读了一些文章,但我做不到。抱歉我的英语不好,如果我的问题很愚蠢,我也很抱歉:)。谢谢

最佳答案

尝试使用 DefaultListModel 而不是 ArrayList:

DefaultListModel<JSONObject> array = new DefaultListModel<>();

然后将其传递到 JList 构造函数中。

关于java - 如何在构造函数中将 arraylist 或 array 放入 JList 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36797880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com