import java.awt.color; GUI klassen til Stadion som du ser kapasistet, utbygge stadion ellers litt info om hvor mange personer som betalte for å se på kampen @author young public class StadionVindu extends JPanelVindu private static JLabel tittel = new JLabel(""); private static JLabel kapasitet = new JLabel(); private static int mittlagid; private static Klubb minklubb; private static Stadion minstadion; public static Container contentpane = SpillVindu.contentPane; private SpringLayout layout = SpillVindu.layout; private static String[] stadionheader = "Utbyggelse","Pris","Valg"; private static Object[][] stadiontabell; private static JScrollPane tabelljs; private static JButton ok; private static JTable lagtabell; private static JLabel minbudsjett = new JLabel(); private static JLabel pop = new JLabel(""); public static int popu = 0; Konstruktoren for å opprette StadionVindu public StadionVindu() super(); contentpane.setlayout(layout); Metode for å sette komponentene før den visesp å skjermen. public void settkomponenter() ArrayList ml = DatabaseManager.ManagerListe; if (!((Manager)(ml.get(ml.size()-1))).hentNavn().equalsIgnoreCase("Tom Nordlie")) mittlagid = ((Manager)(ml.get(ml.size()-1))).hentKlubbID(); stadiontabell = new Object[7][3]; stadiontabell[0][0]= "Utbygg stadion med 100 ekstra seter"; stadiontabell[0][1]= "100000"; stadiontabell[0][2]= Boolean.FALSE; stadiontabell[1][0]= "Utbygg stadion med 500 ekstra seter"; stadiontabell[1][1]= "500000"; stadiontabell[1][2]= Boolean.FALSE; stadiontabell[2][0]= "Utbygg stadion med 1000 ekstra seter"; stadiontabell[2][1]= "1000000"; stadiontabell[2][2]= Boolean.FALSE; stadiontabell[3][0]= "Bygge et VIP-rom"; stadiontabell[3][1]= "2000000"; stadiontabell[3][2]= Boolean.FALSE; stadiontabell[4][0]= "Pusse opp garderobe"; stadiontabell[4][1]= "100000"; stadiontabell[4][2]= Boolean.FALSE; stadiontabell[5][0]= "Bytte ut setene"; stadiontabell[5][1]= "700000"; stadiontabell[5][2]= Boolean.FALSE; stadiontabell[6][0]= "Bygge en splitter ny stadion";
stadiontabell[6][1]= "200000000"; stadiontabell[6][2]= Boolean.FALSE; lagtabell = new JTable (tablemodel); lagtabell.setpreferredscrollableviewportsize(new Dimension(500, 280)); computecolumnwidths(); tabelljs = new JScrollPane(lagTabell); minklubb = Klubb.finnKlubbMedID(mittLagID); minstadion = Stadion.finnStadionMedID(minKlubb.hentStadionID()); tittel.setfont(new Font("Times New Roman", 1, 30) ); tittel.setforeground(new Color(255,255,255)); tittel.settext(minstadion.tostring()); minbudsjett.setforeground(color.white); NumberFormat mb = NumberFormat.getInstance(); minbudsjett.settext(mb.format(minklubb.hentbudsjett())+" kr"); pop.setforeground(new Color(255,255,255)); pop.settext("antall betalende tilskuer i forrige hjemmekamp: " + popu); ok = new JButton (_ok); kapasitet.setfont(new Font("Times New Roman", 1, 20) ); kapasitet.setforeground(new Color(255,255,255)); kapasitet.settext("kapasitet: "+((Stadion) (Stadion.finnStadionMedID(minKlubb.hentStadionID()))).hentKapasitet()); contentpane.add(minbudsjett); contentpane.add(tabelljs); contentpane.add(tittel); contentpane.add(pop); contentpane.add(kapasitet); contentpane.add(ok); int marg = 300; layout.putconstraint(springlayout.west, tittel, marg, SpringLayout.WEST, layout.putconstraint(springlayout.north, tittel, 30, SpringLayout.NORTH, layout.putconstraint(springlayout.west, kapasitet, marg, SpringLayout.WEST, layout.putconstraint(springlayout.north, kapasitet, 40, SpringLayout.NORTH, tittel); layout.putconstraint(springlayout.west, pop, marg, SpringLayout.WEST, layout.putconstraint(springlayout.north, pop, 40, SpringLayout.NORTH, kapasitet); layout.putconstraint(springlayout.west, minbudsjett, marg, SpringLayout.WEST, layout.putconstraint(springlayout.north, minbudsjett, 40, SpringLayout.NORTH, pop); layout.putconstraint(springlayout.west, tabelljs, marg, SpringLayout.WEST, layout.putconstraint(springlayout.north, tabelljs, 40, SpringLayout.NORTH, minbudsjett); layout.putconstraint(springlayout.west, ok, 740, SpringLayout.WEST, layout.putconstraint(springlayout.north, ok, 300, SpringLayout.NORTH, tabelljs); AbstractTableModel tablemodel = new AbstractTableModel() public boolean iscelleditable(int row, int column)
if (column < 2) return false; else return true; public Class getcolumnclass(int column) return getvalueat(0, column).getclass(); public void setvalueat( Object nyverdi, int rad, int kolonne ) stadiontabell[rad][kolonne] = nyverdi; public int getrowcount() return stadiontabell.length; public int getcolumncount() return stadionheader.length; public String getcolumnname(int col) return stadionheader[col]; public Object getvalueat(int row, int col) return stadiontabell[row][col]; ; private static Action _ok = new AbstractAction("Utfør") public void actionperformed(actionevent evt) for (int i = 0; i < stadiontabell.length; i++) if ((Boolean)stadionTabell[i][2] == Boolean.TRUE) if (minklubb.hentbudsjett() >= Integer.parseInt((String)stadionTabell[i][1])) DatabaseManager.budsjettforandring(Integer.parseInt((String)sta diontabell[i][1]),mittlagid); if ( i == 0) if (minstadion.hentekskapasitet() >= 100) DatabaseManager.utbyggStadion(mittLagID, 100); else "Ikke-nok-ekspansjonskapsitet-exception", JOptionPane.ERROR_MESSAGE); else if ( i == 1) if (minstadion.hentekskapasitet() >= 500) DatabaseManager.utbyggStadion(mittLagID, 500); else "Ikke-nok-ekspansjonskapsitet-exception", JOptionPane.ERROR_MESSAGE); else if ( i == 2) if ( minstadion.hentekskapasitet() >= 1000 ) DatabaseManager.utbyggStadion(mittLagID, 1000); else
"Ikke-nok-ekspansjonskapsitet-exception", JOptionPane.ERROR_MESSAGE); else if ( i == 3 ) DatabaseManager.utbyggVipPlasser(mittLagID, 20); DatabaseManager.settPop(mittLagID, 15); else if ( i == 5 ) DatabaseManager.settPop(mittLagID, 45); else if ( i == 6 ) DatabaseManager.utbyggStadion(mittLagID, 25000); DatabaseManager.settPop(mittLagID, 500); else ikke nok penger", "Ikke-nok-penger-exception", JOptionPane.ERROR_MESSAGE); SpillVindu.visVindu(4,true); ; Metode for å vise eller skjule vinduet @param valg tada public void setvisiblevindu(boolean valg) pop.setvisible(valg); tittel.setvisible(valg); kapasitet.setvisible(valg); tabelljs.setvisible(valg); ok.setvisible(valg); minbudsjett.setvisible(valg); private void computecolumnwidths() int hspace = 6; TableModel model = lagtabell.getmodel(); int cols = model.getcolumncount(); int rows = model.getrowcount(); int w[] = new int[ model.getcolumncount() ]; for( int i=0; i<cols; i++ ) w[i] = (int)lagtabell.getdefaultrenderer( String.class ). gettablecellrenderercomponent( lagtabell, lagtabell.getcolumnname( i ), false, false, -1, i ). getpreferredsize().getwidth() + hspace; for( int i=0; i<rows; i++ ) for(int j=0; j<cols; j++ ) Object o = model.getvalueat( i, j ); int width = 0; if ( o!= null ) width = (int)lagtabell.getcellrenderer( i, j ).
i, j ). gettablecellrenderercomponent( lagtabell, o, false, false, getpreferredsize().getwidth() + hspace; if( w[j] < width ) w[j] = width; TableColumnModel colmodel = lagtabell.getcolumnmodel(); for(int i=0; i<cols; i++ ) colmodel.getcolumn( i ).setpreferredwidth( w[i] );