Re: Cannot clean up Evaluator.java code - errors involving javax.tools.*
On Jan 24, 9:46 am, Wojtek Bok <w...@nospam.com> wrote:
phillip.s.pow...@gmail.com wrote:
It does, and it doesn't. Once again I am going to illustrate how my
"language" and your "language" are so not related.That is like saying that the following is a great hindrance to my programming:
20 GOSUB 50:GOTO 100
How can I do things when the language does not have line numbers?
I need to do in
Java what can easily be done in PHP like this:
$msg = eval('JButton ' . $buttonNameValArray[$i][0] . ' = new
JButton("' . $buttonNameValArray[$i][1] . '");');So you are trying to instantiate a new JButton with a variable name which is in an array.
OK, what defines the array? Is it hard coded, is it read in from a configuration file, does the user enter the name?
Use a HashMap:
HashMap<String,JButton> buttons = new HashMap<String,JButton>();
Thank you! It got me on the right track and off the "eval()" track:
private Map<String, JButton> map;
/**
* Generate the necessary {@link javax.swing.JButton} matrix
* @throws java.io.FileNotFoundException Thrown if the CSV file
supplying button definition is not found
* @throws java.io.IOException Thrown if an I/O error occurs while
obtaining CSV file
* @throws java.lang.Exception Thrown if any other error occurs
* @see com.csvreader.CsvReader
*/
public void generateButtons() throws FileNotFoundException,
IOException, Exception {
CsvReader reader = new CsvReader(IconMakerGlobals.srcPath +
File.separator +
getClass().getName().toLowerCase() +
"buttonnamesvalues.csv");
reader.readHeaders();
while (reader.readRecord())
map.put(reader.get("buttonName"), new
JButton(reader.get("buttonVal")));
}
private void initComponents() {
map = new LinkedHashMap<String, JButton>();
try {
generateButtons();
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
applyCalculatorRules(evt.getActionCommand());
}
};
for (Map.Entry<String, JButton> e : map.entrySet()) {
e.getValue().addActionListener(listener);
e.getValue().registerKeyboardAction(listener,
KeyStroke.getKeyStroke(KeyEvent.VK_M, 0, true),
JComponent.WHEN_IN_FOCUSED_WINDOW);
e.getValue().setSelected(false);
p.add(e.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
Then somewhere else:
buttons.add(buttonNameValArray[i][0],new JButton(buttonNameValArray[i][1]));
Then somewhere else you can retrieve the JButton to use it:
buttons.get(buttonNameValArray[i][0]);