Erste Schritte Mal gehes mal nicht (gui)

kill_dmp

Aktives Mitglied
huhu

ich verstehe es nicht, mal zeigt er alles an und dann mal nicht mal mit fehler meldung mal ohne fehlermedlung
iwie keine ahnung warum

hier die main klasse
Java:
package Arbeitsmarkt;

import javax.swing.JFrame;

public class GuiArbeitsmarkt {

	public static void main(String[] args) {
JFrame fenster = new Fenster();

	}

}
schätze mal das hier iwo das prob sein muss
Java:
public Fenster() {

		setVisible(true);
		setSize(1920,1080);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setTitle("Arbeitsmarkt");
		setResizable(false);
		setLayout(new FlowLayout());
	
		button = new JButton("Bestätigen");
		button.setBounds(1000, 50, 80, 200);
	
		add (button);
	
		bestand = new JLabel("du hast keine angestellten");
		bestand.setBounds(100, 50, 500, 400);
		add(bestand);
		Personal[] angebot =new Personal[20];
		for (int i=0;i<angebot.length; i++){
			angebot[i] = new Personal();
		}
		Integer[] marktplatz = new Integer[20];
		for (int i=0;i<marktplatz.length;i++){
			marktplatz[i] =angebot[i].getGehalt();
		}
	String[] gehalsVorstellung =new String[20];
	for (int i=0;i<gehalsVorstellung.length;i++){
		int x;
		Random zufall =new Random(); 
		x= zufall.nextInt(21)+1;
		gehalsVorstellung[i] = "Mitarbeiter "+angebot[i].Berufsbezeischung[zufall.nextInt(11)+1].toString()+ " " +angebot[i].vorName[x].toString() +" Verlangt "+marktplatz[i].toString()+"€"; 
	}
		MarktOffen = new JList(gehalsVorstellung);
		MarktOffen.setVisibleRowCount(20);
		MarktOffen.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		add (MarktOffen);

}
private class BestätigenLissener implements ListSelectionListener {

		@Override
		public void valueChanged(ListSelectionEvent e) {
			// TODO Auto-generated method stub
			
		}
		
	}
}

Java:
package Arbeitsmarkt;

import java.util.Random;

	public class  Personal {
		Random zufall =new Random();
		private int fertigkeit1= zufall.nextInt(1000)+1;
		private int fertigkeit2= zufall.nextInt(1000)+1;
		private int fertigkeit3= zufall.nextInt(1000)+1;
		private int fertigkeit4= zufall.nextInt(1000)+1;
		private int fertigkeit5= zufall.nextInt(1000)+1;
		private int fertigkeit6= zufall.nextInt(1000)+1;
		private int schwirigkeitsgrad;
		private int aussehen= zufall.nextInt(10)+1;
		private boolean mannFrau;
		private int problem1= zufall.nextInt(800)+1;
		private int problem2= zufall.nextInt(800)+1;
		String[] vorName = {"Peter","Klaus","Wolfgang","Dieter","Frank","Horst","Werner","Uwe","Christian","Stefan","Günther","Jürgen","Andreas","Thomas","Michael","Kai","Tobias","David","Hans","Manfred","Bert"};
		String[] nachName ={"1","2"};
		String[] Berufsbezeischung ={"Nutte","Gängster","Einbrecher","Fahrer","Zuhälter","Schläger","instanthalter","Trainer","Tresorknaker","Sprenstoffexperte","Killer","Börsenspikoland"};
		String[] Rang ={"Baby","Anfänger","Leihe","Mittelmaß","Profi","Meister","Spietzerlist","guru","Gottgleich"};
		private int gehalt = 2/problem2-problem1-fertigkeit1+fertigkeit2+fertigkeit3+fertigkeit4+fertigkeit5+fertigkeit6;
		public int getFertigkeit1() {
			return fertigkeit1;
		}
		public int getFertigkeit2() {
			return fertigkeit2;
		}
		public int getFertigkeit3() {
			return fertigkeit3;
		}
		public int getFertigkeit4() {
			return fertigkeit4;
		}
		public int getFertigkeit5() {
			return fertigkeit5;
		}
		public int getFertigkeit6() {
			return fertigkeit6;
		}
		public int getSchwirigkeitsgrad() {
			return schwirigkeitsgrad;
		}
		public int getAussehen() {
			return aussehen;
		}
		public boolean isMannFrau() {
			return mannFrau;
		}
		public int getProblem1() {
			return problem1;
		}
		public int getProblem2() {
			return problem2;
		}
		public void setSchwirigkeitsgrad(int schwirigkeitsgrad) {
			this.schwirigkeitsgrad = schwirigkeitsgrad;
		}
		public void setMannFrau(boolean mannFrau) {
			this.mannFrau = mannFrau;
		}
		public int getGehalt() {
			return gehalt;
		}
		


}

den fehler bekomme ich ab und an
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 21
	at Arbeitsmarkt.Fenster.<init>(Fenster.java:57)
	at Arbeitsmarkt.GuiArbeitsmarkt.main(GuiArbeitsmarkt.java:8)
 
Java:
Berufsbezeischung[zufall.nextInt(11)+1]
Ich schätze dort oder eine der anderen "Zufalls" Indexe wird der Fehler sein.
Welche Zeile ist denn die Zeile 57?
 
1) ArrayIndexOutOfBoundsException ist ein eindeutiger Fehler. Schau auf welches Feld du zugreifen willst und wie viele Felder es gibt.
2) setVisible(true); nach dem Bau der GUI aufrufen
3) GUI im EDT bauen
4) setSize(1920,1080);? Ist das nicht ein bischen viel? Auf meiner Auflösung wäre das nicht darstellbar.
 
Zur Vermeidung der ArrayOutOfBoundsException würde ich das so angehen:

Code:
Berufsbezeischung[zufall.nextInt(11)]

Das betreffende Array hat 11 Einträge und da bei Random.nextInt(int n) die 0 inklusive und n exklusive ist, sollten alle Werte im Array erreicht werden können.

Außerdem rufst du auf einen String .toString() auf, das kann man auch weglassen, schon allein wegen besserer Lesbarkeit.

Grüße
 

Neue Themen


Zurück
Oben