|
MallardsReach wrote: I still get a problem. That is one of the most common reports that we see here, and also the most useless. Unless you tell us exactly what the problem is (including exact error messages), and where it occurs, then we can do very little. Please try to help us to help you.
|
|
|
|
|
Sorry Richard, honestly thought I had given the error.
If I place the code here
public class MyTables
{
void getSecond(int secondNum){
displayTable.setText("\n");
int firstNum, answerNum;
for (firstNum = 1; firstNum <=12; firstNum ++){
answerNum = firstNum * secondNum;
displayTable.append(firstNum + " x " + secondNum + " = " + answerNum +"\n");
}
public static void main(String[] args)
I get this message
Quote: c:\Java>javac MyTables.java
MyTables.java:18: error: illegal start of expression
public static void main(String[] args)
^
1 error
If I put it at the end
loginButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
displayTable.setText("Button Pressed");
}
void getSecond(int secondNum){
displayTable.setText("\n");
int firstNum, answerNum;
for (firstNum = 1; firstNum <=12; firstNum ++){
answerNum = firstNum * secondNum;
displayTable.append(firstNum + " x " + secondNum + " = " + answerNum +"\n");
}
});
}
}
I get 3 error messages
Quote: c:\Java>javac MyTables.java
MyTables.java:69: error: illegal start of type
});
^
MyTables.java:70: error: ')' expected
}
^
MyTables.java:71: error: reached end of file while parsing
}
^
3 errors
|
|
|
|
|
Look at the code, it has two opening brace characters ({ ), one for the method, and one for the for loop. But it only has one closing brace, for the for loop. So you just need to add the one that closes the method block.
|
|
|
|
|
That's done it, although I am annoyed as I knew the curly bracket was missing but when I added it I got different errors.
After your reply I removed the method placed it in a new page and added the bracket so that it had 2 opening and 2 closing, placed it back in my project and it worked.
I do remember that every opening ( or { had to have a matching one closing.
Can now carry on with the project.
Thank you
|
|
|
|
|
The thing to remember is when you start any code block is to add the braces first. You can then fill in the actual code afterwards:
int someMethod(int parameter)
{
}
int someOtherMethod(int parameter)
{
while (some expression)
{
}
if (some boolean expression
{
}
}
But always remember, making mistakes is how we all learned ...
|
|
|
|
|
Thanks Richard that is a good piece of advice that I will remember.
But always remember, making mistakes is how we all learned ...
And this gives me some encouragement as it seems I'm making quite a few.
|
|
|
|
|
OK, so I'm back to using notepad++ in a panel I have a TextBox, Label and Buton all of which show but I have a TextArea that doesn't show, tried various ways but nothing has worked.
private static void placeComponents(JPanel panel)
{
panel.setLayout(null);
JTextArea displayTable = new JTextArea("Text Area");
displayTable.setEditable(false);
displayTable.setColumns(20);
displayTable.setFont(new Font("Times New Roman", 1, 14));
displayTable.setLineWrap(true);
displayTable.setRows(14);
displayTable.setWrapStyleWord(true);
displayTable.setBorder(BorderFactory.createLineBorder(Color.GREEN));
displayTable.setMaximumSize(new java.awt.Dimension(5, 22));
panel.add(displayTable);
|
|
|
|
|
|
I am using an example code that I found line JavaPoint which works and does what I would want it to do, so I thought I would use it in my Netbeans project.
It took a while to figure out what did what as there were no comments and obscure naming eg buttons name is 1.
I now have it working and have renamed things there is one problem I can't figure and it's a call to a method called set()
The program starts with a question and 4 possible radiobutton answers you select an answer then click button next which shows question 2.
For some reason It doesn't show question 1 when the form first loads. Tried various things but none worked for me.
The Next Button Code:
private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {
if(check())
count=count+1;
current++;
set();
if(current==9)
{
JOptionPane.showMessageDialog(this,"Correct Answers = "+count);
btnNext.setEnabled(false);
}
}
First section of the set() Method code
void set()
{
rbSetQuestion.setSelected(true);
if(current==0)
{
lblQuestions.setText("Question1: Which one among these is not a datatype");
rbChoice_1.setText("int");rbChoice_2.setText("Float");rbChoice_3.setText("boolean");rbChoice_4.setText("char");
}
if(current==1)
{
lblQuestions.setText("Question2: Which class is available to all the class automatically");
rbChoice_1.setText("Swing");rbChoice_2.setText("Applet");rbChoice_3.setText("Object");rbChoice_4.setText("ActionEvent");
}
|
|
|
|
|
Where is current initialised? Also, it would be better to put the text of your questions and answers in some sort of List, and pass the current variable to the set method. All set then needs to do is select the values of question and answers based on the List index.
|
|
|
|
|
Hi Richard,
Thanks for taking the time to look and answer.
Here is the start of the code. Once I get it to work I will then read up on list. Just wanted to solve why its not working.When running the example in cmd does.
public PracticeTest() {
initComponents();
}
@SuppressWarnings("unchecked")
int count=0,current=0;
set();
{
counter = 0
set()
}
|
|
|
|
|
The last five lines of that do not make any sense.
The first line is (or should be) a method declaration (but it is not), hence the error message. A call to a method cannot exist at class level, it must be inside an executable block.
The next four define a method that has no name, so can never be executed.
|
|
|
|
|
That's done it
Not sure about the first five lines as I'm using Netbeans and it puts those lines in.
But this is the that solved it.
Quote: A call to a method cannot exist at class level, it must be inside an executable block.
So all I needed was,
private void rbSetQuestionFocusGained(java.awt.event.FocusEvent evt) {
set();
}
As rbSetQuestion is selected at the start, the set() method is executed.
Now to have a look at lists.
|
|
|
|
|
MallardsReach wrote: Not sure about the first five lines as I'm using Netbeans Which is a good reason to abandon Netbeans and use a simple editor*. That way you know that all the code is what you have written, rather than something the framework thinks you need. Once you have really mastered Java then go back to Netbeans, but until then it is only getting in your way. I speak from experience of trying to learn Visual C++ and MFC at the same time.
*notepad, notepad++, eclipse, or even Visual Studio Code, will all do the job. There are probably also many others that I have never looked at.
|
|
|
|
|
Once again Richard, Thanks for the advice.
I guess like most beginners I couldn't understand how writing code in a text editor and running it in cmd made a visual program. I did start with notepad ++ and compiled and run some programs but the result only showed itself in the cmd window, what use is that? then after looking around and gaining a little more understanding, I looked at examples where the code was written, compiled and run.
Lo and behold a window popped up with a button on it!
I think Netbeans makes you feel like you know but as this thread has pointed out, it's just an illusion.
So back to notepad ++ and back to a step at a time. Will also look at the other editors available.
|
|
|
|
|
I've looked at various articles and examples none of which are working for me.
I have a jPanel inside of which is a jlabel.
In the MouseDragged event I have the following code.
int x=evt.getX();
int y=evt.getY();
jLabel3.setLocation(x, y);
jLabel3.repaint();
The Label moves but it flickers and sometimes show a copy of it self.
Any help in the right direction would be appreciated.
|
|
|
|
|
The problem is that dragging produces many events so your code will be repeatedly moving the label a couple of points, and repainting it. You need to limit the number of repaints somehow. It's a long time since I wrote any GUI code in Java, so I am not sure exactly how this is best achieved. I expect Google will find some samples that help, or even some of the example code found in The Java™ Tutorials[^].
|
|
|
|
|
Thanks Richard,
It seems like Java is more of a behind the scenes type of language and not really GUI orientated despite the best efforts of netbeans and the like.
I guess I'll revert to VB as that does it everything you need for a windows environment even though it is platform dependent.
|
|
|
|
|
Not true. You would face exactly the same issue in VB, C# C++ etc.
|
|
|
|
|
|
Thanks Richard
I seem to remember it being easier in vb but could be looking through rose coloured specs.
I looked at the links you suggested but to no avail mind they are 12yrs old now so maybe not surprising.
I will try to use another idea instead.
I was trying to get a question with three possible answers and the user had to drag the correct answer in place, so maybe I'll look at seeing if a jTextField can be dragged around.
If that fails three radio buttons and they can click the one they think is the right answer.
I will stick with Java
|
|
|
|
|
I have created a method
void getSecond(int secondNum)
and in each of my radio buttons I have the following two pieces of code to return a number to the method
both work fine but just wondered which is better practice?
First
getSecond(11);
Second
getSecond(Integer.parseInt(times12.getName()));
|
|
|
|
|
There is no "better"; and if you can't explain how the statements differ, then the answer is "11", or "42".
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Thanks for the reply Eddy,
Glad to hear there is no 'Better' that's good to know.
Of course I can explain how they differ, both return a number to the method one returns the name of the radio button it refers to the other returns the number placed in the buttons event.
So I will use the one that returns the name of the button as it can eliminate the mistake of returning a number for a different button.
But as there is no 'Better' way, then I guess it's how ever the programmer feels on the day.
|
|
|
|
|
Hi
I am looking at Netbeans and have in a button control the following code;
int firstNum, answerNum = 0;
for (firstNum = 1; firstNum <= 12; firstNum ++)
answerNum = firstNum * 2;
displayTable.setText(firstNum + " x 2 = " + answerNum);
but in the textarea it only shows 13 x 2 = 24
does the for not work in netbeans? or does it have to be done differently.
|
|
|
|