У меня есть 2 класса называемые ShopFrame (JFrame) и Импортер (Имеет некоторые поля)Новичок: У меня есть 2 класса Java; JFrame и класс с важными переменными и методами. Как контролировать приоритет? (Подробнее читать)
фрейму имеет JList, и для того, чтобы быть заселена она вызывает в DefaultListModel от импортера класс, но он ВСЕГДА кажется пустым, когда я запускаю класс JFrame.
В классе Importer я объявляю пустой DefaultListModel, а ниже этого в основном методе я использую методы для заполнения его информацией о базе данных. Если я напишу петлю println внутри метода, это покажет мне, что все объекты были успешно добавлены в объявленный DefaultListModel. Задача состоит в том, что JFrame, кажется, вызывает объект, объявленный до его заполнения.
Это может быть действительно глупый вопрос о наследстве или что-то в этом роде! Но, пожалуйста, помогите мне, если сможете.
Я не думал, что для этого нужен пример, но, пожалуйста, спросите, если требуется, это похоже на более простой логический вопрос.
Спасибо!
ShopFrame Класс
public class ShopFrame extends JFrame {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ShopFrame frame = new ShoppingFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public ShoppingFrame() {
setTitle("Shopping Application\r\n");
// Adaptive window size
setPreferredSize(new Dimension(this.getWidth(), this.getHeight()));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 900, 556);
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[]{45, 0, 20, 0, 45, 1, 45, 0, 20, 0, 45, 0};
gridBagLayout.rowHeights = new int[]{45, 0, 0, 0, 0, 0, 20, 0, 0, 20, 0, 0, 20, 0, 30, 0, 45, 0};
gridBagLayout.columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
getContentPane().setLayout(gridBagLayout);
JPanel panel = new JPanel();
panel.setMinimumSize(new Dimension(5, 20));
panel.setBackground(SystemColor.scrollbar);
GridBagConstraints gbc_panel = new GridBagConstraints();
gbc_panel.gridheight = 17;
gbc_panel.insets = new Insets(0, 0, 0, 5);
gbc_panel.fill = GridBagConstraints.BOTH;
gbc_panel.gridx = 5;
gbc_panel.gridy = 0;
getContentPane().add(panel, gbc_panel);
//Importer.productsModel.addElement("This gets added to the empty DefaultListModel, but not the Importer Class's info.");
JList<String> productBox = new JList<String>(Importer.productsModel);
GridBagConstraints gbc_list = new GridBagConstraints();
gbc_list.gridheight = 4;
gbc_list.gridwidth = 3;
gbc_list.insets = new Insets(0, 0, 5, 5);
gbc_list.fill = GridBagConstraints.BOTH;
gbc_list.gridx = 1;
gbc_list.gridy = 2;
getContentPane().add(productBox, gbc_list);
}
Импортер Класс
class Importer {
// Declarations
public static ArrayList<Product> productList = new ArrayList<Product>();
public static DefaultListModel<String> productsModel = new DefaultListModel<String>();
// Connect to database
private static Connection connect = null;
// Running parts of SQL
private static Statement statement = null;
// Running parts of SQL that take parameters
private static PreparedStatement preparedStatement = null;
// Result from a SELECT CELL statement
private static ResultSet resultSetProducts = null;
}
public static void main(String[] args) {
try {
connect = DriverManager.getConnection(
"jdbc:mysql://localhost/shop?useSSL=true"
+ "&user=root&password=Pa$$");
statement = connect.createStatement();
// This imports products into a collection
resultSetProducts = statement.executeQuery(
"select * from shop.products");
exportProductsAsCollection(resultSetProducts, productList, productsModel);
connect.close();
} catch (Exception e) {
System.out.println(e);
}
}
public static void exportProductsAsCollection(ResultSet resultSetProducts, ArrayList<Product> productList, DefaultListModel<String> productModel) throws SQLException {
while (resultSetProducts.next()) {
// Adds each product object (Product) into ArrayList
productList.add(new Product(resultSetProducts.getString("ProductName"), resultSetProducts.getDouble("Price")));
}
// Exports names of products for use in JList
String[] arr = new String[productList.size()];
for (int i = 0; i < arr.length; i++)
{
arr[i] = productList.get(i).getProductName();
productModel.addElement(arr[i]);
// To test
System.out.println(arr[i]);
}
}
Нам нужен код, чтобы найти ошибку, потому что ошибка указана в коде. Мы не можем достоверно знать, что ваш код, просто прочитав ваше описание. Код имеет значение. –
Конечно, просто добавил. Спасибо за ваше время! –