i'm working on java program has jcombo box users select shape , shape generated randomly multiple times. i'm using command line run , using notepad. i'm on latest jdk version. how can modify code compiles on newer version..?
import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.util.random; import javax.swing.*; public class hw1b extends jframe { public hw1b() { super("hw1b"); final combopanel combopanel = new combopanel(); string[] shapeitems = { "square", "oval", "rectangle", "circle" //"circle", "square", "oval", "rectangle" }; jcombobox shapebox = new jcombobox(shapeitems); shapebox.additemlistener(new itemlistener() { public void itemstatechanged(itemevent e) { if(e.getstatechange() == itemevent.selected) { string item = (string)e.getitem(); if(item.equals("square")) combopanel.makesquares(); if(item.equals("oval")) combopanel.makeovals(); if(item.equals("rectangle")) combopanel.makerectangles(); if(item.equals("circle")) combopanel.makecircles(); /* if(item.equals("circle")) combopanel.makesquares(); if(item.equals("square")) combopanel.makeovals(); if(item.equals("oval")) combopanel.makerectangles(); if(item.equals("rectangle")) combopanel.makecircles(); */ } } }); //position , set size of jpanel jpanel southpanel = new jpanel(); southpanel.add(shapebox); setdefaultcloseoperation(exit_on_close); getcontentpane().add(combopanel, "center"); getcontentpane().add(southpanel, "south"); setsize(600,400); setlocation(200,200); setvisible(true); } private class combopanel extends jpanel { int w, h; random seed; static final int oval = 0, rect = 1; int shapetype = -1; public combopanel() { seed = new random(); setbackground(color.white); } public void paintcomponent(graphics g) { super.paintcomponent(g); graphics2d g2 = (graphics2d)g; g2.setrenderinghint(renderinghints.key_antialiasing, renderinghints.value_antialias_on); int width = getwidth(); int height = getheight(); int x, y; shape s = null; for(int = 0; < 20; i++) { x = seed.nextint(width - w); y = seed.nextint(height - h); switch(shapetype) { case oval: s = new ellipse2d.double(x, y, w, h); break; case rect: s = new rectangle2d.double(x, y, w, h); } if(shapetype > -1) g2.draw(s); } } public void makesquares() { shapetype = rect; w = 50; h = 50; repaint(); } public void makeovals() { shapetype = oval; w = 80; h = 60; repaint(); } public void makerectangles() { shapetype = rect; w = 80; h = 40; repaint(); } public void makecircles() { shapetype = oval; w = 75; h = 75; repaint(); } } public static void main(string[] args) { new hw1b(); } }
the jcombobox
"raw" type, means need provide actual type going use. message concerned not error, rather tries draw attention line:
jcombobox shapebox = new jcombobox(shapeitems);
in order make code type-safe need explicitly jcombobox going work strings:
jcombobox<string> shapebox = new jcombobox<>(shapeitems);
i recommend go through this post in case wish know more raw types , generics.
Comments
Post a Comment