incompatible types when trying to make random in java -
this question has answer here:
error:
error: incompatible types
question: have change or add code make work?
this line:
kies kiesnaam = lijst.get( n );
class:
class kies extends onthoudnaam implements actionlistener { public void actionperformed( actionevent e ) { random r = new random(); int n = r.nextint(lijst.size() ); kies kiesnaam = lijst.get( n ); textvak2.settext("" + kiesnaam ); } }
the whole code:
import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; import java.util.*; // main method make frame public class loterij3 extends jframe { public static void main( string args[] ) { jframe frame = new loterij3(); frame.setextendedstate( frame.maximized_both ); frame.setdefaultcloseoperation( jframe.exit_on_close ); frame.settitle( "my lottery!" ); frame.setcontentpane( new paneel() ); frame.setvisible( true ); } } class paneel extends jpanel { private boven boven; jtextarea textvak1; jtextfield textvak2; onthoudnaam onthoudnaam = new onthoudnaam(); jtextfield invoervak1; public paneel() { setlayout( new borderlayout() ); // using border layout. setbackground( color.light_gray ); boven = new boven(); textvak1 = new jtextarea(); add( new jscrollpane( textvak1 ) ); textvak1.setbackground( color.white ); textvak2 = new jtextfield(); textvak2.sethorizontalalignment(jtextfield.center); textvak2.seteditable( false ); add( boven, borderlayout.north ); add( textvak1, borderlayout.center ); add( textvak2, borderlayout.south ); } public class boven extends jpanel { jbutton kieswin, resetl; jlabel label1; public boven() { setbackground( color.light_gray ); setlayout( new gridlayout( 1, 4, 100, 5 ) ); // using gridlayout. border border = borderfactory.createemptyborder( 10, 10, 10, 10 ); setborder( border ); kieswin = new jbutton("kies een winnaar!"); kieswin.addactionlistener( new kies() ); resetl = new jbutton("reset alles"); resetl.addactionlistener( new reset() ); label1 = new jlabel("voer persoon in en druk op enter: ", jlabel.right); invoervak1 = new jtextfield( 20 ); invoervak1.addactionlistener( new invoervakhandler() ); add( label1 ); add( invoervak1 ); add( kieswin ); add( resetl ); } } // de naam class naam { private string ingevoerdnaam; public naam( string ingevoerdnaam) { this.ingevoerdnaam = ingevoerdnaam; } public string getingevoerdnaam() { return ingevoerdnaam; } public string tostring() { return ingevoerdnaam; } } // arraylist class onthoudnaam extends jpanel { protected arraylist<naam> lijst; public onthoudnaam() { lijst = new arraylist<naam>(); } public void voegnaamtoe(naam x ) { lijst.add(x); } public string tostring() { stringbuffer buffer = new stringbuffer(); for(naam x : lijst ) { buffer.append( x ); buffer.append( "\n" ); } return buffer.tostring(); } } // invoer handler public class invoervakhandler implements actionlistener { public void actionperformed( actionevent e ) { string invoer = invoervak1.gettext(); naam naam = new naam( invoer ); onthoudnaam.voegnaamtoe( naam ); textvak1.settext( onthoudnaam.tostring() ); invoervak1.settext( "" ); } } // kies class kies extends onthoudnaam implements actionlistener { public void actionperformed( actionevent e ) { random r = new random(); int n = r.nextint(lijst.size() ); kies kiesnaam = lijst.get( n ); textvak2.settext("" + kiesnaam ); } } // reset class reset implements actionlistener { public void actionperformed( actionevent e ) { } } }
for trying me: thank , patience in advance!
your list of type arraylist<naam>
you're trying assign value in (which of type naam
) variable of type kies
.
a few pointers improve readability of code:
- follow java naming conventions. use camelcase. classes should start capital letter (example myclassname). variables should start lowercase letter (example myclassinstance).
- use interface on concrete type. list should
list<naam>
. lets switch out implementations later, if need to. - user proper , consistent indentation.
Comments
Post a Comment