Mam taki program w Swingu:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
public class JComboArray extends javax.swing.JFrame {
//CONSTRUCTOR
public JComboArray() {
initComponents();
}
String[]arr1;
public class Program {
public void main(String[] args) throws IOException {
ArrayList<String> arr7 = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new FileReader(
"C:/SalesPartner/myfile.txt"));
// Loop over lines in the file and print them.
while (true) {
String line = reader.readLine();
if (line == null) {
break;
}
arr7.add(line);
System.out.println(line);
}
// Close the BufferedReader.
reader.close();
// System.out.println(arr7);
arr1 = arr7.toArray(new String[arr7.size()]);
// System.out.println(arr1);
// for(String value:arr1) {
// System.out.println(value);
// }
}
}
//BIND DATA
private void populate()
{
// String[] spacecrafts={"Casini","Juno","Apollo 15","Kepler","New Horizon","Galileo","Enterprise","James Web","Voyager","Spitzer"};
DefaultComboBoxModel dm=new DefaultComboBoxModel(arr1);
jComboBox1.setModel(dm);
}
@SuppressWarnings("unchecked")
//THIS GENERATED BY NETBEANS
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jComboBox1 = new javax.swing.JComboBox();
populateBtn = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
populateBtn.setText("Populate");
populateBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
populateBtnActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(181, 181, 181)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(236, 236, 236)
.addComponent(populateBtn)))
.addContainerGap(195, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(86, 86, 86)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(56, 56, 56)
.addComponent(populateBtn)
.addContainerGap(154, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
//POPULATE BTN CLICKED
private void populateBtnActionPerformed(java.awt.event.ActionEvent evt) {
populate();
}
//MAIN METHODS
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JComboArray().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JComboBox jComboBox1;
private javax.swing.JButton populateBtn;
// End of variables declaration
}
Domyślnie po naciśnięciu na przycisk Populate zmienia on zawartość ComboBox'a. Tylko że w moim przypadku z ArrayList to nie działa i wyrzuca w Consoli takie błędy:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.DefaultComboBoxModel.<init>(Unknown Source)
at JComboArray.populate(JComboArray.java:49)
at JComboArray.populateBtnActionPerformed(JComboArray.java:101)
at JComboArray.access$0(JComboArray.java:100)
at JComboArray$1.actionPerformed(JComboArray.java:68)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
proszę o pomoc jak to naprawić żeby ładowało te dane z ArrayList do tego Combobox'a. Utknąłem na tym i nie wiem co zrobić.