Change java applet to java application - java

I have an applet that runs a GUI. I want to call this GUI from my other program. I know that I need to turn this applet into an application. I have an init() and a actionPerformed(ActionEvent ae). How can I do it?
My code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class survey extends Applet implements ActionListener
{
private TextField question;
private Button enter, start;
int count = 0;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
String text, input;
private Label intro1, intro2, intro3;
private Label qone1, qone2, qone3, qone4, qone5, qone6, qone7, qone8, qone9, qone10, qone11, qone12;
private Label qtwo1, qtwo2, qtwo3, qtwo4, qtwo5, qtwo6, qtwo7, qtwo8, qtwo9, qtwo10, qtwo11, qtwo12;
private Label qthree1, qthree2, qthree3, qthree4, qthree5, qthree6, qthree7, qthree8, qthree9, qthree10, qthree11, qthree12;
private Label qfour1, qfour2, qfour3, qfour4, qfour5, qfour6, qfour7, qfour8, qfour9, qfour10, qfour11, qfour12;
private Label qfive1, qfive2, qfive3, qfive4, qfive5, qfive6, qfive7, qfive8, qfive9, qfive10, qfive11, qfive12;
private Label qsix1, qsix2, qsix3, qsix4, qsix5, qsix6, qsix7, qsix8, qsix9, qsix10, qsix11, qsix12;
private Label qseven1, qseven2, qseven3, qseven4, qseven5, qseven6, qseven7, qseven8, qseven9, qseven10, qseven11, qseven12;
private Label qeight1, qeight2, qeight3, qeight4, qeight5, qeight6, qeight7, qeight8, qeight9, qeight10, qeight11, qeight12;
private Label qnine1, qnine2, qnine3, qnine4, qnine5, qnine6, qnine7, qnine8, qnine9, qnine10, qnine11, qnine12;
private Label qten1, qten2, qten3, qten4, qten5, qten6, qten7, qten8, qten9, qten10, qten11, qten12;
private Label qeleven1, qeleven2, qeleven3, qeleven4, qeleven5, qeleven6,
private Label finish1, finish2, finish3;
public void init()
{
setLayout(null);
start = new Button ("Start");
question = new TextField(10);
enter = new Button ("Enter");
if (count == 0)
{
setBackground( Color.yellow);
intro1 = new Label("Target Advertising", Label.CENTER);
intro1.setFont(new Font("Times-Roman", Font.BOLD, 16));
intro2 = new Label("Welcome to this questionnaire. First, we would like to know more about your personal preferences.");
intro3 = new Label("For each question, Input a rating between 0-9 (zero = least interested, 9 = most interested) in the text box. Click enter for next question.");
add(intro1);
add(intro2);
add(intro3);
intro1.setBounds(0,0,800,20);
intro2.setBounds(15,20,800,20);
intro3.setBounds(15,40,800,20);
add(start);
start.setBounds(370,60,70,23);
start.addActionListener(this);
}
if(count == 1)
{
setBackground( Color.yellow );
qone1 = new Label("Question 1", Label.LEFT);
qone1.setFont(new Font("Times-Roman", Font.BOLD, 16));
qone2 = new Label("How much do you like action movies?");
qone3 = new Label("0");
qone4 = new Label("1");
qone5 = new Label("2");
qone6 = new Label("3");
qone7 = new Label("4");
qone8 = new Label("5");
qone9 = new Label("6");
qone10 = new Label("7");
qone11 = new Label("8");
qone12 = new Label("9");
add(qone1);
add(qone2);
add(qone3);
add(qone4);
add(qone5);
add(qone6);
add(qone7);
add(qone8);
add(qone9);
add(qone10);
add(qone11);
add(qone12);
qone1.setBounds(15,0,800,20);
qone2.setBounds(15,20,800,15);
qone3.setBounds(15,60,800,15);
qone4.setBounds(15,80,800,15);
qone5.setBounds(15,100,800,15);
qone6.setBounds(15,120,800,15);
qone7.setBounds(15,140,800,15);
qone8.setBounds(15,160,800,15);
qone9.setBounds(15,180,800,15);
qone10.setBounds(15,200,800,15);
qone11.setBounds(15,220,800,15);
qone12.setBounds(15,240,800,15);
add(question);
add(enter);
question.setBounds(15,260,70,15);
enter.setBounds(90,260,110,23);
question.addActionListener(this);
enter.addActionListener(this);
}
if (count == 2)
{
qtwo1 = new Label("Question 2", Label.LEFT);
qtwo1.setFont(new Font("Times-Roman", Font.BOLD, 16));
qtwo2 = new Label("How much do you like Science Fiction?");
qtwo3 = new Label("0");
qtwo4 = new Label("1");
qtwo5 = new Label("2");
qtwo6 = new Label("3");
qtwo7 = new Label("4");
qtwo8 = new Label("5");
qtwo9 = new Label("6");
qtwo10 = new Label("7");
qtwo11 = new Label("8");
qtwo12 = new Label("9");
add(qtwo1);
add(qtwo2);
add(qtwo3);
add(qtwo4);
add(qtwo5);
add(qtwo6);
add(qtwo7);
add(qtwo8);
add(qtwo9);
add(qtwo10);
add(qtwo11);
add(qtwo12);
qtwo1.setBounds(15,0,800,20);
qtwo2.setBounds(15,20,800,15);
qtwo3.setBounds(15,60,800,15);
qtwo4.setBounds(15,80,800,15);
qtwo5.setBounds(15,100,800,15);
qtwo6.setBounds(15,120,800,15);
qtwo7.setBounds(15,140,800,15);
qtwo8.setBounds(15,160,800,15);
qtwo9.setBounds(15,180,800,15);
qtwo10.setBounds(15,200,800,15);
qtwo11.setBounds(15,220,800,15);
qtwo12.setBounds(15,240,800,15);
add(question);
add(enter);
question.setBounds(15,260,70,15);
enter.setBounds(90,260,110,23);
question.addActionListener(this);
enter.addActionListener(this);
}
if(count == 3)
{
qthree1 = new Label("Question 3", Label.LEFT);
qthree1.setFont(new Font("Times-Roman", Font.BOLD, 16));
qthree2 = new Label("How much do you like comedy?");
qthree3 = new Label("0");
qthree4 = new Label("1");
qthree5 = new Label("2");
qthree6 = new Label("3");
qthree7 = new Label("4");
qthree8 = new Label("5");
qthree9 = new Label("6");
qthree10 = new Label("7");
qthree11 = new Label("8");
qthree12 = new Label("9");
add(qthree1);
add(qthree2);
add(qthree3);
add(qthree4);
add(qthree5);
add(qthree6);
add(qthree7);
add(qthree8);
add(qthree9);
add(qthree10);
add(qthree11);
add(qthree12);
qthree1.setBounds(15,0,800,20);
qthree2.setBounds(15,20,800,15);
qthree3.setBounds(15,60,800,15);
qthree4.setBounds(15,80,800,15);
qthree5.setBounds(15,100,800,15);
qthree6.setBounds(15,120,800,15);
qthree7.setBounds(15,140,800,15);
qthree8.setBounds(15,160,800,15);
qthree9.setBounds(15,180,800,15);
qthree10.setBounds(15,200,800,15);
qthree11.setBounds(15,220,800,15);
qthree12.setBounds(15,240,800,15);
add(question);
add(enter);
question.setBounds(15,260,70,15);
enter.setBounds(90,260,110,23);
question.addActionListener(this);
enter.addActionListener(this);
}
if(count == 4)
{
qfour1 = new Label("Question 4", Label.LEFT);
qfour1.setFont(new Font("Times-Roman", Font.BOLD, 16));
qfour2 = new Label("How much do you like luxary cars?");
qfour3 = new Label("0");
qfour4 = new Label("1");
qfour5 = new Label("2");
qfour6 = new Label("3");
qfour7 = new Label("4");
qfour8 = new Label("5");
qfour9 = new Label("6");
qfour10 = new Label("7");
qfour11 = new Label("8");
qfour12 = new Label("9");
add(qfour1);
add(qfour2);
add(qfour3);
add(qfour4);
add(qfour5);
add(qfour6);
add(qfour7);
add(qfour8);
add(qfour9);
add(qfour10);
add(qfour11);
add(qfour12);
qfour1.setBounds(15,0,800,20);
qfour2.setBounds(15,20,800,15);
qfour3.setBounds(15,60,800,15);
qfour4.setBounds(15,80,800,15);
qfour5.setBounds(15,100,800,15);
qfour6.setBounds(15,120,800,15);
qfour7.setBounds(15,140,800,15);
qfour8.setBounds(15,160,800,15);
qfour9.setBounds(15,180,800,15);
qfour10.setBounds(15,200,800,15);
qfour11.setBounds(15,220,800,15);
qfour12.setBounds(15,240,800,15);
add(question);
add(enter);
question.setBounds(15,260,70,15);
enter.setBounds(90,260,110,23);
question.addActionListener(this);
enter.addActionListener(this);
}
if(count == 5)
{
qfive1 = new Label("Question 5", Label.LEFT);
qfive1.setFont(new Font("Times-Roman", Font.BOLD, 16));
qfive2 = new Label("How much do you like trucks?");
qfive3 = new Label("0");
qfive4 = new Label("1");
qfive5 = new Label("2");
qfive6 = new Label("3");
qfive7 = new Label("4");
qfive8 = new Label("5");
qfive9 = new Label("6");
qfive10 = new Label("7");
qfive11 = new Label("8");
qfive12 = new Label("9");
add(qfive1);
add(qfive2);
add(qfive3);
add(qfive4);
add(qfive5);
add(qfive6);
add(qfive7);
add(qfive8);
add(qfive9);
add(qfive10);
add(qfive11);
add(qfive12);
qfive1.setBounds(15,0,800,20);
qfive2.setBounds(15,20,800,15);
qfive3.setBounds(15,60,800,15);
qfive4.setBounds(15,80,800,15);
qfive5.setBounds(15,100,800,15);
qfive6.setBounds(15,120,800,15);
qfive7.setBounds(15,140,800,15);
qfive8.setBounds(15,160,800,15);
qfive9.setBounds(15,180,800,15);
qfive10.setBounds(15,200,800,15);
qfive11.setBounds(15,220,800,15);
qfive12.setBounds(15,240,800,15);
add(question);
add(enter);
question.setBounds(15,260,70,15);
enter.setBounds(90,260,110,23);
question.addActionListener(this);
enter.addActionListener(this);
}
if(count == 7)
{
finish1 = new Label("Thank You." , Label.CENTER);
finish1.setFont(new Font("Times-Roman", Font.BOLD, 50));
finish2 = new Label("Questionnaire Completed.", Label.CENTER);
finish2.setFont(new Font("Times-Roman", Font.BOLD, 50));
add(finish1);
add(finish2);
finish1.setBounds(0,200,800,60);
finish2.setBounds(0,300,800,60);
}
}
public void actionPerformed(ActionEvent ae)
{
String button = ae.getActionCommand();
text = question.getText();
b = 0;
c = 0;
if (count == 6)
{
input = text.toUpperCase();
remove(enter);
remove(question);
question.setText("");
remove(qsix1);
remove(qsix2);
remove(qsix3);
remove(qsix4);
remove(qsix5);
remove(qsix6);
remove(qsix7);
remove(qsix8);
remove(qsix9);
remove(qsix10);
remove(qsix11);
remove(qsix12);
try{
FileWriter fstream = new FileWriter("lets3.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(new String(input));
out.write("\n");
out.close();
}
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
if(input.equals("OL"))
{
b = 1;
count = 7;
init();
}
else
{
b = 2;
count = 7;
init();
}
}
if (count == 5)
{
input = text.toUpperCase();
remove(enter);
remove(question);
question.setText("");
remove(qfive1);
remove(qfive2);
remove(qfive3);
remove(qfive4);
remove(qfive5);
remove(qfive6);
remove(qfive7);
remove(qfive8);
remove(qfive9);
remove(qfive10);
remove(qfive11);
remove(qfive12);
try{
FileWriter fstream = new FileWriter("lets3.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(new String(input));
out.write("\n");
out.close();
}
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
if(input.equals("BR"))
{
b = 1;
count = 6;
init();
}
else
{
b = 2;
count = 6;
init();
}
}
if (count == 4)
{
input = text.toLowerCase();
remove(enter);
remove(question);
question.setText("");
remove(qfour1);
remove(qfour2);
remove(qfour3);
remove(qfour4);
remove(qfour5);
remove(qfour6);
remove(qfour7);
remove(qfour8);
remove(qfour9);
remove(qfour10);
remove(qfour11);
remove(qfour12);
try{
FileWriter fstream = new FileWriter("lets3.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(new String(input));
out.write("\n");
out.close();
}
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
if(input.equals("no"))
{
b = 1;
count = 5;
init();
}
else
{
b = 2;
count = 5;
init();
}
}
if (count == 3)
{
input = text.toLowerCase();
remove(enter);
remove(question);
question.setText("");
remove(qthree1);
remove(qthree2);
remove(qthree3);
remove(qthree4);
remove(qthree5);
remove(qthree6);
remove(qthree7);
remove(qthree8);
remove(qthree9);
remove(qthree10);
remove(qthree11);
remove(qthree12);
try{
FileWriter fstream = new FileWriter("lets3.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(new String(input));
out.write("\n");
out.close();
}
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
if(input.equals("black"))
{
b = 1;
count = 4;
init();
}
else
{
b = 2;
count = 4;
init();
}
}
if (count == 2)
{
input = text.toLowerCase();
remove(enter);
remove(question);
question.setText("");
remove(qtwo1);
remove(qtwo2);
remove(qtwo3);
remove(qtwo4);
remove(qtwo5);
remove(qtwo6);
remove(qtwo7);
remove(qtwo8);
remove(qtwo9);
remove(qtwo10);
remove(qtwo11);
remove(qtwo12);
try{
FileWriter fstream = new FileWriter("lets3.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(new String(input));
out.write("\n");
out.close();
}
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
if(input.equals("yes"))
{
b = 1;
count = 3;
init();
}
else
{
b = 2;
count = 3;
init();
}
}
if (count == 1)
{
input = text.toUpperCase();
remove(enter);
remove(question);
question.setText("");
remove(qone1);
remove(qone2);
remove(qone3);
remove(qone4);
remove(qone5);
remove(qone6);
remove(qone7);
remove(qone8);
remove(qone9);
remove(qone10);
remove(qone11);
remove(qone12);
try{
FileWriter fstream = new FileWriter("lets3.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(new String(input));
out.write("\n");
out.close();
}
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
if(input.equals("i"))
{
b = 1;
count = 2;
init();
}
else
{
b = 1;
count = 2;
init();
}
}
if (count == 0)
{
remove(intro1);
remove(intro2);
remove(intro3);
remove(start);
count = 1;
init();
}
this.validate();
}
}

In all honesty, you need to re-write your program from scratch so that you can incorporate OOP techniques, arrays, collections, and other advantages that Java has to offer. I recommend:
First of all since your code displays a series of questions and prompts for response, don't hard-code the questions in the code but make them part of the data. Have your program read in a text file that holds the questions. This will allow you to change questions or add questions without altering code.
Create a non-GUI Question class that holds questions and user responses and that is used by the GUI as its "model".
Create an ArrayList of Question objects.
For your GUI, code to the JPanel, not the applet or the JFrame. This will give you the option of using your GUI in a JFrame or a JApplet, or even a JDialog or embedded in another JPanel should you so desire.
If you will need to swap display panels, consider using CardLayout for this purpose.
If however all you'll be doing is changing the text of the question, then display the question text in a JLabel and when you want to change it, call setText(...) on the JLabel passing in the new question's text.
Use the user-friendly layout managers to ease your work of laying out components in the GUI.
Your current code has a lot of unnecessary redundencies. Use of arrays and collections such as ArrayLists will remove many of these redudancies and make debugging and upgrading much easier.
As others have stated and as I stated in my earlier comment, you should move up to the Swing library as it is much more flexible and robust than the AWT gui library that you are currently using. The Swing tutorials will show you what you need to know to create beautiful Swing programs.

Just add a main() method, make a Frame for your applet, add the applet to the frame, and call the applet's init() and start() methods. See my Mandelbrot.java for an example: http://unixshell.jcomeau.com/src/java/com/jcomeau/Mandelbrot.java
One advantage of this approach is that it can be used with any existing applet, to allow it to function as either an applet or application. Use a JFrame if you're using Swing components, otherwise it should work pretty nearly the same.

In general, you'll want to change all the non swing components to swing components. For events, they're roughly the same for both applets and swing applications. Hope it helps.

I'm not sure what you are asking, but if you want it inside a window all you need to do is this:
public Object[] startNewSurvey()
{
java.awt.Frame f = new java.awt.Frame("You're title here.");
f.setSize(new Dimension(<Width>, <Height>));
f.setResizable(false);
survey s = new survey();
s.init();
f.add(s);
f.setVisible(true);
return new Object[] { f, s };
}
That will just instance a brand new frame and put another new instance of your survey class in that frame, then display it. It also returns a 2 sized Object[] array containing the new Frame and survey instances made. Hope that helps.

https://way2java.com/applets/applet-to-application/
Following are the changes to be made from Applet to Application
Delete the statement "import java.applet" package
Replace extends Applet with Frame
Replace the init() method with constructor
Check the layout (for Applet, the default layout is FlowLayout and for Frame, it is BorderLayout)
Add setXXX() methods like setSize() etc.
Add the main() method
HTML is not required (delete it)

Related

WARNING Possible use of "Transverse_Mercator" projection outside its valid area

I am trying to combign tiff image and shapefile and want show it. For this, I am using GeoTiff and I am stuck that my tiff file is now being displayed. Shapefile is showing properly but tiff image, which is having only 1 band and grey scale index, is not being shown because of some reason. I am getting one warning message as below.
2016-08-04T12:43:06.456+0530 WARNING Possible use of "Transverse_Mercator" projection outside its valid area.
Latitude 180°00.0'S is out of range (±90°).
How can I remove this message?
My code is as below
private void displayLayers() throws Exception {
AbstractGridFormat format = GridFormatFinder.findFormat(this.getBlueMarble());
this.setGridCoverageReader(format.getReader(this.getBlueMarble()));
Style rgbStyle = this.createRGBStyle();
// connect to the shapefile
FileDataStore dataStore = FileDataStoreFinder.getDataStore(this.getBorderShape());
SimpleFeatureSource shapefileSource = dataStore.getFeatureSource();
Style shpStyle = SLD.createPolygonStyle(Color.BLUE, null, 0.0f);
MapContent map = new MapContent();
map.getViewport().setCoordinateReferenceSystem(
DefaultGeographicCRS.WGS84);
map.setTitle("Illegal Mining");
Layer rasterLayer = new GridReaderLayer(this.getGridCoverageReader(), rgbStyle);
map.addLayer(rasterLayer);
Layer shpLayer = new FeatureLayer(shapefileSource, shpStyle);
map.addLayer(shpLayer);
System.out.println("Trying to show on map...");
JMapPane mapPane = new JMapPane();
mapPane.setMapContent(map);
mapPane.setDisplayArea(shapefileSource.getBounds());
//mapPane.setDisplayArea(this.getGridCoverageReader().getOriginalEnvelope());
this.add(mapPane, BorderLayout.CENTER);
}
private Style createRGBStyle() {
GridCoverage2DReader reader = this.getGridCoverageReader();
StyleFactory sf = this.getStyleFactory();
GridCoverage2D cov = null;
try {
cov = reader.read(null);
} catch (IOException giveUp) {
throw new RuntimeException(giveUp);
}
// We need at least three bands to create an RGB style
int numBands = cov.getNumSampleDimensions();
System.out.println("numBands:"+numBands);
if (numBands < 3) {
System.out.println("Bands are less than 3");
//return null;
}
// Get the names of the bands
String[] sampleDimensionNames = new String[numBands];
for (int i = 0; i < numBands; i++) {
GridSampleDimension dim = cov.getSampleDimension(i);
sampleDimensionNames[i] = dim.getDescription().toString();
}
final int RED = 0, GREEN = 1, BLUE = 2;
int[] channelNum = { -1, -1, -1 };
Boolean greyflag=false;
// We examine the band names looking for "red...", "green...",
// "blue...".
// Note that the channel numbers we record are indexed from 1, not 0.
for (int i = 0; i < numBands; i++) {
String name = sampleDimensionNames[i].toLowerCase();
System.out.println("name :"+name);
if (name != null) {
if (name.matches("red.*")) {
channelNum[RED] = i + 1;
} else if (name.matches("green.*")) {
channelNum[GREEN] = i + 1;
} else if (name.matches("blue.*")) {
channelNum[BLUE] = i + 1;
}else if(name.matches("gray.*")){
System.out.println("What to do here");
channelNum[RED] = 1;
channelNum[GREEN] = 2;
channelNum[BLUE] = 3;
greyflag=true;
}
}
}
// If we didn't find named bands "red...", "green...", "blue..."
// we fall back to using the first three bands in order
if(greyflag==false){
if (channelNum[RED] < 0 || channelNum[GREEN] < 0
|| channelNum[BLUE] < 0) {
channelNum[RED] = 1;
channelNum[GREEN] = 2;
channelNum[BLUE] = 3;
}
}
// Now we create a RasterSymbolizer using the selected channels
SelectedChannelType[] sct = new SelectedChannelType[cov
.getNumSampleDimensions()];
ContrastEnhancement ce = sf.contrastEnhancement(this.ff.literal(1.0),
ContrastMethod.NORMALIZE);
for (int i = 0; i < numBands; i++) {
sct[i] = sf.createSelectedChannelType(
String.valueOf(channelNum[i]), ce);
System.out.println(String.valueOf(channelNum[i]));
}
RasterSymbolizer sym = sf.getDefaultRasterSymbolizer();
ChannelSelection sel =sf.channelSelection(sct[RED]);
if(numBands>1){
sel = sf.channelSelection(sct[RED], sct[GREEN],
sct[BLUE]);
}
sym.setChannelSelection(sel);
return SLD.wrapSymbolizers(sym);
}
I just pass two files as below code
public MapImagePanel() {
this.setLayout(new BorderLayout(0, 0));
this.setBackground(Color.BLUE);
this.setPreferredSize(new Dimension(720, 360));
this.setBlueMarble(new File("E:/tifffilename.TIFF"));
this.setBorderShape(new File("E:/shapefilename.shp"));
try {
this.displayLayers();
} catch (Exception e) {
e.printStackTrace();
}
}
This is how i use this class in main class
//see output in main method
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MapImagePanel panel = new MapImagePanel();
panel.setPreferredSize(new Dimension(1024,768));
panel.setVisible(true);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
frame.show();
TLDR; add the following line to your program start up:
System.setProperty("org.geotools.referencing.forceXY", "true");
From GeoTools FAQ as computer programmers they knew that coordinates would be expressed as longitude,latitude pairs so they could use existing graphics code easily by treating them as a simple (x,y) pair. but for sequence like (x,y) or (y,x) they confused that is why this error is coming.

How to print an output on GUI textbox instead of Eclipse console?

I am trying to allow a user click a btnGenerate which then generates a random number that is assigned to a phrase that can be called to print out the phrase in a box below the button in the application window in eclipse.
The problem is that the random statement comes up on the Eclipse console instead of the textbox on my GUI.
Any help is appreciated. Here is my code so far:
//generate crime button
JButton generateBtn = new JButton("Generate Crime");
generateBtn.setBackground(Color.LIGHT_GRAY);
generateBtn.setFont(new Font("HGHeiseiKakugothictaiW3", Font.BOLD, 20));
GridBagConstraints gbc_generateBtn = new GridBagConstraints();
gbc_generateBtn.fill = GridBagConstraints.BOTH;
gbc_generateBtn.insets = new Insets(0, 0, 5, 5);
gbc_generateBtn.gridx = 15;
gbc_generateBtn.gridy = 5;
frmHeroVillains.getContentPane().add(generateBtn, gbc_generateBtn);
generateBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
/*random number generator that generates a number between 1-4 and outputs a random crime to the updatePane depending on which
number was generated */
int number = ((int) (Math.random()*4)+1);
switch (number) {
case 1:
System.out.println("Jewelry Heist on main street!");
break;
case 2:
System.out.println("Mugging in China town!");
break;
case 3:
System.out.println("Boeing 247 - Hijacked!");
default:
System.out.println("Nothing to Report.");
break;
}
;
JLabel updateLabel = new JLabel("UPDATE ALERT.... " + number);
GridBagConstraints gbc_updateLabel = new GridBagConstraints();
gbc_updateLabel.gridheight = 3;
gbc_updateLabel.insets = new Insets(0, 0, 5, 5);
gbc_updateLabel.gridx = 15;
gbc_updateLabel.gridy = 12;
frmHeroVillains.getContentPane().add(updateLabel, gbc_updateLabel);} }
);
You need to redirect the System.out.println(...) message to your own component.
Check out the Message Console for one approach to doing this. You can redirect the output to a JTextArea or JTextPane.
public static void main(String[] args) throws Exception {
//Must throws Exception
JPanel myOutput = new JPanel();
myOutput.setVisible(true);
myOutput.setBackground(Color.GRAY);
JTextArea mynewText = new JTextArea();
myOutput.add(mynewText);
URL oracle = new URL("http://www.oracle.com/");
BufferedReader in = new BufferedReader(new InputStreamReader(
oracle.openStream()));
//InputStreamReader wrapped in BufferedReader
String inputLine;
inputLine = in.readLine();
mynewText.setText(inputLine);
in.close();
//In the target window class
mainWindow.add(myOutput);

How to "hide" a JFrame using a JButton outside the main

So i've nearly completed this project, the last thing being the "hide" button. My teacher never gave instruction on what to do, but since it's annoying me and I can't find an answer that works, I figured i'd ask you good folks.
I've tried:
setExtendedState(JFrame.ICONIFIED) //causes a compiler error, can't find my variable name
setState(JFrame.ICONIFIED) //same issue, "can't find symbol", or rather find my variable
setVisible(false) //this doesn't work bc it hides my entire frame, and I can't get it back without closing the program.
I use Container c = getContentPane() to create the pane, then inside the main I use:
ClassName variableName = new ClassName() to create the parameters.
This is how I was taught and I have to use this way for now(since it is what my teacher wants) but I have noticed there are other ways to achieve this same goal.
Any input specific to my program would be awesome! Thanks!
My program as follows(I posted the whole thing so nothing may be left out):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Arrays;
public class Project9 extends JFrame
{
Font f1 = new Font("Serif", Font.BOLD, 30);
Font f2 = new Font("Serif", Font.PLAIN, 18);
private BOOKItem[] bookArray = new BOOKItem[10];
private JLabel headerLbl;
private JLabel messagesLbl;
private JTextField idLabelFld;
private JTextField idFld;
private JTextField priceLabelFld;
private JTextField priceFld;
private JTextField numInStockLabelFld;
private JTextField numInStockFld;
private JTextField codeLabelFld;
private JTextField codeFld;
private JTextField messagesFld;
private JButton insertBtn;
private JButton deleteBtn;
private JButton displayBtn;
private JButton displayOneBtn;
private JButton hideBtn;
private JButton clearBtn;
private String input = "";
private String displayOneStr = "";
private int idInput = 0;
private double priceInput = 0.0;
private int numInStockInput = 0;
private int codeInput = 0;
private int index = 0;
private int numItems = 0;
private int responseCode = 0;
private Container c = getContentPane();
//Main Method, sets arrayFrame params
public static void main(String[] args)
{
Project9 arrayFrame = new Project9();
arrayFrame.setSize(555,450);
arrayFrame.setVisible(true);
arrayFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//Constructor
public Project9()
{
//Creates the array
for (int i = 0; i < bookArray.length; i++)
{
bookArray[i] = new BOOKItem();
System.out.println(bookArray[i]);
}
setTitle("Project 9");
c.setLayout(new FlowLayout());
headerLbl = new JLabel("Data Entry: BestBargainBook Store");
headerLbl.setFont(f1);
c.add(headerLbl);
idLabelFld = new JTextField("Enter ID:", 15);
idLabelFld.setEditable(false);
c.add(idLabelFld);
idFld = new JTextField(25);
c.add(idFld);
priceLabelFld = new JTextField("Enter Price:", 15);
priceLabelFld.setEditable(false);
c.add(priceLabelFld);
priceFld = new JTextField(25);
c.add(priceFld);
numInStockLabelFld = new JTextField("Enter Number In Stock:", 15);
numInStockLabelFld.setEditable(false);
c.add(numInStockLabelFld);
numInStockFld = new JTextField(25);
c.add(numInStockFld);
codeLabelFld = new JTextField("Enter Code: 1,2,3 or 4:", 15);
codeLabelFld.setEditable(false);
c.add(codeLabelFld);
codeFld = new JTextField(25);
c.add(codeFld);
insertBtn = new JButton("Insert");
c.add(insertBtn);
deleteBtn = new JButton("Delete");
c.add(deleteBtn);
displayBtn = new JButton("Display");
c.add(displayBtn);
displayOneBtn = new JButton("DisplayOne");
c.add(displayOneBtn);
hideBtn = new JButton("Hide");
c.add(hideBtn);
clearBtn = new JButton("Clear");
c.add(clearBtn);
messagesLbl = new JLabel("Messages:");
messagesLbl.setFont(f2);
c.add(messagesLbl);
messagesFld = new JTextField(30);
c.add(messagesFld);
//Event Listeners
insertBtn.addActionListener(new EventHandler());
deleteBtn.addActionListener(new EventHandler());
displayBtn.addActionListener(new EventHandler());
displayOneBtn.addActionListener(new EventHandler());
hideBtn.addActionListener(new EventHandler());
clearBtn.addActionListener(new EventHandler());
}//end constructor
private class EventHandler implements ActionListener
{
public void actionPerformed(ActionEvent ev)
{
if (ev.getSource() == insertBtn)
{
input = idFld.getText();
idInput = Integer.parseInt(input);
input = priceFld.getText();
priceInput = Double.parseDouble(input);
input = numInStockFld.getText();
numInStockInput = Integer.parseInt(input);
input = codeFld.getText();
codeInput = Integer.parseInt(input);
insert(idInput, priceInput, numInStockInput,
codeInput);
if (responseCode == 0)
{
messagesFld.setText("Array is full. Cannot insert book ID: " +
idInput);
}
else if (responseCode == 1)
{
messagesFld.setText("Succesful insertion of " + idInput);
}
else if (responseCode == -1)
{
messagesFld.setText("Duplicate ID: " + idInput);
}
}
else if (ev.getSource() == deleteBtn)
{
input = idFld.getText();
idInput = Integer.parseInt(input);
delete(idInput);
if (responseCode == 1)
{
messagesFld.setText("Successful delete of book ID: " +
idInput);
}
else if (responseCode == -1)
{
messagesFld.setText("ID: " + idInput + " not found.");
}
}
else if (ev.getSource() == displayBtn)
{
for (index = 0; index < bookArray.length; index++)
{
bookArray[index].display();
}
}
else if (ev.getSource() == displayOneBtn)
{
input = idFld.getText();
idInput = Integer.parseInt(input);
for (index = 0; index < bookArray.length; index++)
{
if (bookArray[index].getID() == idInput)
{
bookArray[index].getID();
bookArray[index].getPrice();
bookArray[index].getNumberInStock();
bookArray[index].getCode();
messagesFld.setText("id: " + bookArray[index].getID() +
" Price: " + bookArray[index].getPrice() +
" Number In Stock: " + bookArray[index].getNumberInStock() +
" Code: " + bookArray[index].getCode());
}
}
}
else if (ev.getSource() == hideBtn)
{
}
else if (ev.getSource() == clearBtn)
{
idFld.setText("");
priceFld.setText("");
numInStockFld.setText("");
codeFld.setText("");
messagesFld.setText("");
repaint();
}
}//End actionPerformed
}//End handler
//insert method, called when insert button is pressed
public int insert(int iD, double prc, int numInStock, int code)
{
if (numItems == 10)
{
System.out.println("\nThe Array is full, please delete an entry");
responseCode = 0;
return responseCode;
}
for (index = 0; index < bookArray.length; index++)
{
if (bookArray[index].getID() == iD)
{
System.out.println("\nThat ID already exists");
responseCode = -1;
return responseCode;
}
else if (bookArray[index].getID() == 0)
{
bookArray[index] = new BOOKItem(iD, prc, numInStock, code);
numItems++;
System.out.println("\n" + idInput + "\n" + priceInput + "\n" +
numInStockInput + "\n" + codeInput + "\n" + index);
System.out.println("\nID: " + bookArray[index].getID());
System.out.println("Price: " + bookArray[index].getPrice());
System.out.println("NIS: " + bookArray[index].getNumberInStock());
System.out.println("Code: " + bookArray[index].getCode());
System.out.println("Items in Array: " + numItems);
responseCode = 1;
return responseCode;
}
}
return responseCode;
}//end insert method
//Delete method, called when delete button is pressed
public int delete(int id)
{
for (index = 0; index < bookArray.length; index++)
{
if (bookArray[index].getID() == id)
{
bookArray[index].setID(0);
bookArray[index].setPrice(0);
bookArray[index].setStock(0);
bookArray[index].setCode(0);
numItems--;
System.out.println("\nSuccessful deletion");
responseCode = 1;
return responseCode;
}
}
responseCode = -1;
return responseCode;
}//end delete method
}//end app
In the ActionListener for your "Hide" button the basic code would be:
JButton button = (JButton)e.getSource();
Window window = SwingUtilities.windowForComponent( button );
JFrame frame = (JFrame)window;
frame.setState(JFrame.ICONIFIED);
This way you are not depending on any instance variable that identifies your frame. Using the source object of the event is a good way to make your listeners generic and flexible.
You can just simply do this with a button listener that sets the visiblity of the frame to false:
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame.setVisible(false);
}
});
If you want to iconify a JFrame:
minimize with frame.setState(Frame.ICONIFIED)
restore with frame.setState(Frame.NORMAL)
taken from: How to minimize a JFrame window from Java?
In your EventHandler nested class, try something like
Project9.this.setState(JFrame.ICONIFIED);

Can't write into a file, java swing

I want to write into a file, but It doesn't seem to write into it, the files name is Grade output.txt...
for example when i run the program, the input for quiz 1 : 90.. which is Q1 it supposed to add on the file after stopped running.
'try {
BufferedWriter out = new BufferedWriter(new FileWriter("Grade output.txt"));
//for (int i = 0; i < 11; i++) {
out.write(Q1 + " ");
System.out.println(Q1);
out.close();
} catch (IOException e) {}
'
'
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class AICS_grade_applet extends Applet implements ActionListener {
// Label titleLabel = new Label(" Grading System", Label.CENTER);
Label prelimsQ1Label = new Label("Quiz 1", Label.LEFT);
TextField prelimsQ1Field = new TextField(10);
Label prelimsQ2Label = new Label("Quiz 2", Label.LEFT);
TextField prelimsQ2Field = new TextField(10);
Label prelimsCSLabel = new Label("Quiz 3", Label.LEFT);
TextField prelimsCSField = new TextField(10);
Label prelimsEXLabel = new Label("Quiz 4", Label.LEFT);
TextField prelimsEXField = new TextField(10);
Label midtermQ1Label = new Label("Quiz 5", Label.LEFT);
TextField midtermQ1Field = new TextField(10);
Label midtermQ2Label = new Label("Quiz 6", Label.LEFT);
TextField midtermQ2Field = new TextField(10);
Label midtermCSLabel = new Label("Quiz 7", Label.LEFT);
TextField midtermCSField = new TextField(10);
Label midtermEXLabel = new Label("Quiz 8", Label.LEFT);
TextField midtermEXField = new TextField(10);
Label finalsQ1Label = new Label("Quiz 9", Label.LEFT);
TextField finalsQ1Field = new TextField(10);
Label finalsQ2Label = new Label("Quiz 10", Label.LEFT);
TextField finalsQ2Field = new TextField(10);
Label finalsCSLabel = new Label("Quiz 11", Label.LEFT);
TextField finalsCSField = new TextField(10);
Label finalsEXLabel = new Label("Quiz 12", Label.LEFT);
TextField finalsEXField = new TextField(10);
Button computeButton = new Button(" Compute ");
Button clearButton = new Button(" Clear ");
Label gradeLabel = new Label("Grade: ", Label.RIGHT);
TextField gradeField = new TextField(10);
Label statusLabel = new Label("Status: ", Label.RIGHT);
TextField statusField = new TextField("enter the data", 10);
public void init() { // begin init-------------------------------
setBackground(Color.white);
setForeground(Color.red);
// add(titleLabel);
add(prelimsQ1Label);
add(prelimsQ1Field);
prelimsQ1Field.setForeground(Color.red);
add(prelimsQ2Label);
add(prelimsQ2Field);
prelimsQ2Field.setForeground(Color.red);
add(prelimsCSLabel);
add(prelimsCSField);
prelimsCSField.setForeground(Color.red);
add(prelimsEXLabel);
add(prelimsEXField);
prelimsEXField.setForeground(Color.red);
add(midtermQ1Label);
add(midtermQ1Field);
midtermQ1Field.setForeground(Color.red);
add(midtermQ2Label);
add(midtermQ2Field);
midtermQ2Field.setForeground(Color.red);
add(midtermCSLabel);
add(midtermCSField);
midtermCSField.setForeground(Color.red);
add(midtermEXLabel);
add(midtermEXField);
midtermEXField.setForeground(Color.red);
add(finalsQ1Label);
add(finalsQ1Field);
finalsQ1Field.setForeground(Color.red);
add(finalsQ2Label);
add(finalsQ2Field);
finalsQ2Field.setForeground(Color.red);
add(finalsCSLabel);
add(finalsCSField);
finalsCSField.setForeground(Color.red);
add(finalsEXLabel);
add(finalsEXField);
finalsEXField.setForeground(Color.red);
add(computeButton);
computeButton.addActionListener(this);
add(clearButton);
clearButton.addActionListener(this);
add(gradeLabel);
add(gradeField);
gradeField.setForeground(Color.gray);
add(statusLabel);
add(statusField);
statusField.setForeground(Color.blue);
} // end init
public void actionPerformed(ActionEvent yhan) {
// declare object strings
String strprelimsQ1 = new String(prelimsQ1Field.getText());
String strprelimsQ2 = new String(prelimsQ2Field.getText());
String strprelimsCS = new String(prelimsCSField.getText());
String strprelimsEX = new String(prelimsEXField.getText());
String strmidtermQ1 = new String(midtermQ1Field.getText());
String strmidtermQ2 = new String(midtermQ2Field.getText());
String strmidtermCS = new String(midtermCSField.getText());
String strmidtermEX = new String(midtermEXField.getText());
String strfinalsQ1 = new String(finalsQ1Field.getText());
String strfinalsQ2 = new String(finalsQ2Field.getText());
String strfinalsCS = new String(finalsCSField.getText());
String strfinalsEX = new String(finalsEXField.getText());
if (yhan.getSource() == computeButton)
{
if (strprelimsQ1.equals("")) {
prelimsQ1Field.setText("0");
}
if (strprelimsQ2.equals("")) {
prelimsQ2Field.setText("0");
}
if (strprelimsCS.equals("")) {
prelimsCSField.setText("0");
}
if (strprelimsEX.equals("")) {
prelimsEXField.setText("0");
}
if (strmidtermQ1.equals("")) {
midtermQ1Field.setText("0");
}
if (strmidtermQ2.equals("")) {
midtermQ2Field.setText("0");
}
if (strmidtermCS.equals("")) {
midtermCSField.setText("0");
}
if (strmidtermEX.equals("")) {
midtermEXField.setText("0");
}
if (strfinalsQ1.equals("")) {
finalsQ1Field.setText("0");
}
if (strfinalsQ2.equals("")) {
finalsQ2Field.setText("0");
}
if (strfinalsCS.equals("")) {
finalsCSField.setText("0");
}
if (strfinalsEX.equals("")) {
finalsEXField.setText("0");
}
// Converting input to values
int Q1 = Integer.parseInt(prelimsQ1Field.getText());
int Q2 = Integer.parseInt(prelimsQ2Field.getText());
int Q3 = Integer.parseInt(prelimsQ2Field.getText());
int Q4 = Integer.parseInt(prelimsEXField.getText());
int Q5 = Integer.parseInt(midtermQ1Field.getText());
int Q6 = Integer.parseInt(midtermQ2Field.getText());
int Q7 = Integer.parseInt(midtermQ2Field.getText());
int Q8 = Integer.parseInt(midtermEXField.getText());
int Q9 = Integer.parseInt(finalsQ1Field.getText());
int Q10 = Integer.parseInt(finalsQ2Field.getText());
int Q11 = Integer.parseInt(finalsQ2Field.getText());
int Q12 = Integer.parseInt(finalsEXField.getText());
// Calculations
double grade = (Q1 + Q2 + Q3 + Q4
+ Q5 + Q6 + Q7 + Q8 + Q9 + Q10+ Q11+ Q12) / 12;
try {
BufferedWriter out = new BufferedWriter(new FileWriter("Grade output.txt"));
//for (int i = 0; i < 11; i++) {
out.write(Q1 + " ");
System.out.println(Q1);
out.close();
} catch (IOException e) {}
// Output grade
gradeField.setText("" + Math.round(grade));
if (grade < 75) {
statusField.setText("failed");
} else {
statusField.setText("Pass");
}
if (grade > 100) {
statusField.setText("You may have invalid input");
}
} // end if computeButton
if (yhan.getSource() == clearButton) {
gradeField.setText("");
prelimsQ1Field.setText("");
prelimsQ2Field.setText("");
prelimsCSField.setText("");
prelimsEXField.setText("");
midtermQ1Field.setText("");
midtermQ2Field.setText("");
midtermCSField.setText("");
midtermEXField.setText("");
finalsQ1Field.setText("");
finalsQ2Field.setText("");
finalsCSField.setText("");
finalsEXField.setText("");
statusField.setText("reenter the data");
} // end if clearButton
} // end actionperformed
} // end class
'
Unless signed, an applet cannot write to the file system. You can either sign the applet or deploy re-develop the applet as an application using Java Web Start.
Read:
Signing Applets Using RSA Certificates
Java Applet & Web Start - Code Signing
What Applets Can and Cannot Do

Array Required, but java.lang.String found

I'm trying to hide a random word which I retrieved from a list in a text file, but the code keeps giving me the following error: Array Required, but java.lang.String found
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;
import javax.swing.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
import java.util.List;
public class Hangman extends JFrame
{
private static final char HIDECHAR = '_';
String imageName = null;
String Path = "D:\\Varsity College\\Prog212Assign1_10-013803\\images\\";
static int guesses =0;
private String original = readWord();
private String hidden;
int i = 0;
static JPanel panel;
static JPanel panel2;
static JPanel panel3;
static JPanel panel4;
public Hangman(){
JButton[] buttons = new JButton[26];
this.original = original;
this.hidden = this.createHidden();
panel = new JPanel(new GridLayout(0,9));
panel2 = new JPanel();
panel3 = new JPanel();
panel4 = new JPanel();
JButton btnRestart = new JButton("Restart");
btnRestart.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
}
});
JButton btnNewWord = new JButton("Add New Word");
btnNewWord.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
try
{
FileWriter fw = new FileWriter("Words.txt", true);
PrintWriter pw = new PrintWriter(fw, true);
String word = JOptionPane.showInputDialog("Please enter a word: ");
pw.println(word);
pw.close();
}
catch(IOException ie)
{
System.out.println("Error Thrown" + ie.getMessage());
}
}
});
JButton btnHelp = new JButton("Help");
btnHelp.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
String message = "The word to guess is represented by a row of dashes, giving the number of letters and category of the word."
+ "\nIf the guessing player suggests a letter which occurs in the word, the other player writes it in all its correct positions."
+ "\nIf the suggested letter does not occur in the word, the other player draws one element of the hangman diagram as a tally mark."
+ "\n"
+ "\nThe game is over when:"
+ "\nThe guessing player completes the word, or guesses the whole word correctly"
+ "\nThe other player completes the diagram";
JOptionPane.showMessageDialog(null,message, "Help",JOptionPane.INFORMATION_MESSAGE);
}
});
JButton btnExit = new JButton("Exit");
btnExit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
JLabel lblWord = new JLabel(original);
if(guesses >= 0) imageName = "Hangman1.jpg";
if(guesses >= 1) imageName = "Hangman2.jpg";
if(guesses >= 2) imageName = "Hangman3.jpg";
if(guesses >= 3) imageName = "Hangman4.jpg";
if(guesses >= 4) imageName = "Hangman5.jpg";
if(guesses >= 5) imageName = "Hangman6.jpg";
if(guesses >= 6) imageName = "Hangman7.jpg";
ImageIcon icon = null;
if(imageName != null){
icon = new ImageIcon(Path + File.separator + imageName);
}
JLabel label = new JLabel();
label.setIcon(icon);
String b[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
for(i = 0; i < buttons.length; i++)
{
buttons[i] = new JButton(b[i]);
panel.add(buttons[i]);
}
panel2.add(label);
panel3.add(btnRestart);
panel3.add(btnNewWord);
panel3.add(btnHelp);
panel3.add(btnExit);
panel4.add(lblWord);
}
public String readWord()
{
try
{
BufferedReader reader = new BufferedReader(new FileReader("Words.txt"));
String line = reader.readLine();
List<String> words = new ArrayList<String>();
while(line != null)
{
String[] wordsLine = line.split(" ");
boolean addAll = words.addAll(Arrays.asList(wordsLine));
line = reader.readLine();
}
Random rand = new Random(System.currentTimeMillis());
String randomWord = words.get(rand.nextInt(words.size()));
return randomWord;
}catch (Exception e){
return null;
}
}
private String printWord(){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < this.original.length(); i++){
sb.append(HIDECHAR);
}
return sb.toString();
}
public boolean check(char input){
boolean found = false;
for (int i = 0; i < this.original.length(); i++){
if(this.original.charAt(i)== input)){
found = true;
this.hidden[i] = this.original.charAt(i);
}
}
return found;
}
public static void main(String[] args)
{
System.out.println();
Hangman frame = new Hangman();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Box mainPanel = Box.createVerticalBox();
frame.setContentPane(mainPanel);
mainPanel.add(panel, BorderLayout.NORTH);
mainPanel.add(panel2);
mainPanel.add(panel4);
mainPanel.add(panel3);
frame.pack();
frame.setVisible(true);
}
}
Okay there's the whole code< the error is now on line 151 and 149... I've also tried to fix it according to one of the posts
You can't use array subscripts: [], to index into a String, and both hidden and original are Strings.
You can instead use original.charAt(i) to read a character at an index.
As for writing a character at an index: java Strings are immutable, so you can't change individual characters. Instead make hidden a StringBuilder, or simply a char[]:
// in your class member declarations:
char hidden[] = createHidden();
// possible implementation of createHidden:
char[] createHidden()
{
if (original != null)
return new char[original.length()];
else return null;
}
And then your loop can use original.charAt like so:
if (this.original.charAt(i) == input)
{
found = true;
this.hidden[i] = this.original.charAt(i);
1. As you are using original.length() its a String, as length() method works with String, not with Array, as for array, length is an Instance variable.
2. Try it like this....
this.hidden[i] = original.charAt(i);
3. And as char is Not an object but a primitive, use "=="
if (this.original[i] == input)

Categories

Resources