java - Jlist and NullPointerException -
i working on thing class, , have been having ton of trouble jlists. thought figured out how update them list data models, still doesn't work.
please help.
class causing me trouble:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; import java.lang.*; public class clubdriverwindow extends jpanel implements actionlistener{ private arraylist playerlist; private defaultlistmodel playerlistmodel; private string[] secondplayeritems = new string[1]; private string[] firstplayeritems = new string[1]; private string[] players1items = new string[1]; private string[] players2items = new string[1]; private string[] retireplayeritems = new string[1]; private string[] jcomp12items = new string[1]; private string[] restoreplayeritems = new string[1]; private jtextarea players; private jcombobox secondplayer; private jcombobox firstplayer; private jbutton player1win; private jbutton player2wins; private jbutton draw; private jbutton exit; private jcombobox players1; private jcombobox players2; private jtextarea jcomp10; private jcombobox retireplayer; private jlist jcomp12; private jcombobox restoreplayer; private jbutton retirebutton; private jbutton restorebutton; private jtextarea jcomp16; private jtextfield addplayer; private jbutton addbutton; public clubdriverwindow() { playerlist = new arraylist<player>(); player starter = new player ("starter"); playerlist.add(starter); playerlist.add(starter); playerlist.add(starter); playerlist.add(starter); playerlist.add(starter); playerlistmodel = new defaultlistmodel<string>(); updateplayers(); //construct components players = new jtextarea (5, 5); secondplayer = new jcombobox (secondplayeritems); secondplayer.addactionlistener(this); secondplayer.setactioncommand("secondplayercombobox"); firstplayer = new jcombobox (firstplayeritems); player1win = new jbutton ("win"); player2wins = new jbutton ("win"); draw = new jbutton ("draw"); exit = new jbutton ("exit"); exit.addactionlistener(this);; exit.setactioncommand("exit"); players1 = new jcombobox (players1items); players2 = new jcombobox (players2items); jcomp10 = new jtextarea (5, 5); retireplayer = new jcombobox (retireplayeritems); jcomp12 = new jlist (playerlistmodel); restoreplayer = new jcombobox (restoreplayeritems); retirebutton = new jbutton ("retire"); restorebutton = new jbutton ("restore"); jcomp16 = new jtextarea (5, 5); addplayer = new jtextfield (5); addbutton = new jbutton ("add player"); addbutton.addactionlistener(this); addbutton.setactioncommand("addplayer"); //set components properties players.settooltiptext ("this leaderboard of players"); secondplayer.settooltiptext ("choose player"); firstplayer.settooltiptext ("choose player"); player1win.settooltiptext ("player 1 wins"); player2wins.settooltiptext ("player2 wins"); draw.settooltiptext ("no victor"); exit.settooltiptext ("help, trapped in jbutton!"); players1.settooltiptext ("choose player"); players2.settooltiptext ("choose player"); retireplayer.settooltiptext ("choose player"); restoreplayer.settooltiptext ("choose player"); retirebutton.settooltiptext ("set player aside (for now)"); restorebutton.settooltiptext ("click here bring player back"); addbutton.settooltiptext ("click here add new player"); //adjust size , set layout setpreferredsize (new dimension (784, 508)); setlayout (null); //add components add (players); add (secondplayer); add (firstplayer); add (player1win); add (player2wins); add (draw); add (exit); add (players1); add (players2); add (jcomp10); add (retireplayer); add (jcomp12); add (restoreplayer); add (retirebutton); add (restorebutton); add (jcomp16); add (addplayer); add (addbutton); //set component bounds (only needed absolute positioning) players.setbounds (40, 40, 300, 300); secondplayer.setbounds (-170, 295, 100, 75); firstplayer.setbounds (-185, 355, 100, 75); player1win.setbounds (45, 405, 100, 25); player2wins.setbounds (215, 405, 100, 25); draw.setbounds (135, 445, 100, 25); exit.setbounds (675, 5, 100, 25); players1.setbounds (45, 365, 100, 25); players2.setbounds (215, 365, 100, 25); jcomp10.setbounds (380, 0, 2, 600); retireplayer.setbounds (415, 60, 100, 25); jcomp12.setbounds (-150, 345, 100, 75); restoreplayer.setbounds (415, 110, 100, 25); retirebutton.setbounds (595, 60, 100, 25); restorebutton.setbounds (595, 110, 100, 25); jcomp16.setbounds (-150, 300, 100, 75); addplayer.setbounds (415, 165, 100, 25); addbutton.setbounds (595, 165, 100, 25); } public static void main (string[] args) { jframe frame = new jframe ("mypanel"); frame.setdefaultcloseoperation (jframe.exit_on_close); frame.getcontentpane().add (new clubdriverwindow()); frame.pack(); frame.setvisible (true); } public void wongame(player winner, player loser){ double wrating = winner.getrating(); double lrating = loser.getrating(); double pointmodifier = (lrating/wrating); wrating += ((pointmodifier*10)+0.5); lrating -= ((pointmodifier*10)-0.5); winner.setrating(wrating); loser.setrating(lrating); winner.setwins(winner.getwins() + 1); loser.setlosses(winner.getlosses() + 1); } public void drawgame(player player1, player player2){ double p1rating = player1.getrating(); double p2rating = player2.getrating(); double p1modifier = ((p1rating-p2rating)/p1rating); double p2modifier = ((p2rating-p1rating)/p2rating); p1rating += ((p1modifier*-5)); p2rating += ((p2modifier*-5)); player1.setrating(p1rating); player2.setrating(p2rating); player1.setdraws(player1.getdraws() + 1); player2.setdraws(player2.getdraws() + 1); } public void actionperformed(actionevent e){ if (e.getactioncommand().equals("secondplayercombobox")){ } else if (e.getactioncommand().equals("exit")){ system.exit(0); } else if (e.getactioncommand().equals("addplayer")){ addnewplayer(); } } public void addnewplayer(){ } public void updateplayers(){ int size = playerlist.size(); playerlistmodel.clear(); (int j = 0; (j < (size-1)); j++){ playerlistmodel.add(j,((player)playerlist.get(j)).getname()); } jcomp12.setmodel(playerlistmodel); } } related player class:
public class player { //private record playerrecord private double rating; private final string id = ""; private int ranking; public string name; private int losses; private int wins; private int draws; public player(string name){ rating = 1000.0; ranking = 0; name = name; losses = 0; wins = 0; draws = 0; } int gettotalgames(){ int t = (wins+draws+losses); return t; } float getwinlossratio(){ float r = (wins/losses); return r; } int getwins(){ return wins; } int getlosses(){ return losses; } int getdraws(){ return draws; } double getrating(){ return rating; } string getid(){ return id ; } double getranking(){ return ranking; } string getname(){ return name; } void setwins(int newwins){ wins = newwins; } void setlosses(int newlosses){ losses = newlosses; } void setdraws(int newdraws){ draws = newdraws; } void setrating(double newrating){ rating = newrating; } void setname(string newname){ name = newname; } } error:
java.lang.nullpointerexception @ clubdriverwindow.updateplayers(clubdriverwindow.java:194) @ clubdriverwindow.<init>(clubdriverwindow.java:52) @ clubdriverwindow.main(clubdriverwindow.java:144) please help, thanks.
maybe should change
private arraylist playerlist; private defaultlistmodel playerlistmodel; to
private arraylist<player> playerlist; private defaultlistmodel<string> playerlistmodel; and part,
player starter = new player ("starter"); playerlist.add(starter); playerlist.add(starter); playerlist.add(starter); playerlist.add(starter); playerlist.add(starter); if want 5 different players, need create them 1 one, e.g.
player starter = null; for(int = 0; < 5; i++) { starter = new player("starter" + i); playerlist.add(starter); }
ok, nullpointerexception part answered.
for nullpointerexception, need call updateplayers(); after have initialized jcomp12..
jcomp12 = new jlist (playerlistmodel); // .... updateplayers(); or jcomp12 null inside updateplayers() method!
Comments
Post a Comment