The question is a bit open to opinion but personally I prefer the add button, it is much more explicitly clear to the end user.
The blank line can look like just another line of data, not an opportunity to add something.
The question is a bit open to opinion but personally I prefer the add button, it is much more explicitly clear to the end user.
The blank line can look like just another line of data, not an opportunity to add something.
I agree with schooner. I think the first method is more explicit and intuitive.
Like most UI questions, the answer is "it depends". Depends on what? What the user is trying to accomplish and what their mental model is.
To me, if the action is akin to "add a row" I want a button to do that. If on the other my mental model is more of "fill in a row" I think the blank row makes sense.
For example, when I add a transaction in Quicken (which uses the blank row concept) I'm not thinking "I need to add a row". Instead, I feel like I'm simply filling in the next blank row in a conceptually infinite balance sheet. Same think with a spreadsheet -- imagine how hard it would be to use a spreadsheet if you had to click a button each time you wanted to add a row or column.
So instead of looking for a one-rule-fits-all solution, focus on the specific problem you are trying to automate.
A blank line is somewhat easier for repeated entry of multiple records. After the user finishes one record the user just tabs again to a newly created blank line and keeps going. No need to reach for the mouse. The use of a blank line also results in the records being in the order the user entered, making it easy to check one's work as one goes. If you know the user's task is to enter records (e.g., the table is empty), you can pre-position the cursor in the blank row to save the user the trouble of finding and clicking the Insert button.
The Insert button is somewhat easier for adding records intermixed among other tasks. The user doesn't have to scroll to the end of the table before adding, which generally takes longer than hitting a button and makes a user lose his/her place in the table. For tables already filled with records, an Insert button may be more discoverable than the blank line assuming the button is always in view (a blank at the bottom is scrolled out of view, and user may not think to scroll down and find it).
You could, of course, have both an Insert button and a blank line, or otherwise try to have the best of both worlds. For example, you can have the Insert button but if a table is empty, you can open it with a blank line pre-inserted for the user. Tabbing from the last field in the last line could be an “expert” means of inserting a line for data entry users. Or the Insert Button can have an accelerator key (like, maybe Insert?) so the data entry users can use it to insert multiple records without their fingers leaving their keyboards. The Insert button maybe should also insert a new record below the current one so that new records are in the order they are entered.