我的想法是在Java swing中创建一个应用程序,其中包含一个登录窗口,然后是一种公司选择器。但我需要从json url中导入公司列表和ID,这就是我所做的,但我怎样才能将构造函数中的数组推入JList
?如何将arraylist或数组放入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();
}
我试图让一个ArrayList
,甚至正常的阵列出来的JSONarray
并推JList
(因为我认为这将是做正确的方式) 。我知道这里的一切都有点混乱。我看了几篇教程,并阅读了一些文章,但我无法做到。对不起,我的英语不好,对不起,如果我的问题是愚蠢的:)。使用DefaultListModel,而不是一个ArrayList的感谢
我不认为你是愚蠢的。 –