A way to escape the notebook paradigm is to use attached cells. For instance you can make a cute little input-field display interface like so:
bottomWrappedBox[boxExpr_, bottomLayer_] :=
DynamicModule[
{myBox, myCell},
DynamicWrapper[
boxExpr,
If[MatchQ[NotebookRead[myCell], Except[_Cell]],
myBox = EvaluationBox[];
myCell =
FrontEndExecute@
FrontEnd`AttachCell[myBox,
Cell[BoxData@ToBoxes@bottomLayer],
{Offset[{2, 0}, -2], {Left, Bottom}
},
{Left, Top},
"ClosingActions" -> {"ParentChanged", "EvauatorQuit"}
]
]
],
UnsavedVariables :> {myBox, myCell}
]
bottomWrappedBox[
Panel[
InputField[
Dynamic["", (a = #) &],
String,
ImageSize -> 100
],
Appearance ->
{
"Default" ->
Lookup[
FrontEndResource["FEExpressions",
"TooltipOptionsBarNinePatchAppearance"],
"Hover"
]
},
FrameMargins -> {{10, 10}, {5, 5}}
],
Framed[
Dynamic[Pane[a, ImageSize -> 102]],
FrameMargins -> {{10, 10}, {3, 3}},
FrameStyle -> GrayLevel[.8]
]
]

The display cell is properly attached to the box of the input-field. This isn't a prettied-up Column
-type interface.
The gets more powerful once you realize you can attach the same to a notebook. Here's a way to make a temporary notebook footer:
makeTemporaryNotebookFooter[nb_: Automatic, footer_] :=
FrontEndExecute@
FrontEnd`AttachCell[
Replace[nb, Automatic :> EvaluationNotebook[]],
Cell[BoxData@ToBoxes@footer, "DockedCell",
CellFrame -> {{0, 0}, {0, 1}},
Background -> GrayLevel[.95],
CellSize -> {Scaled[1], 50},
CellFrameMargins -> None,
TextAlignment -> Center
],
{Offset[{0, 0}, 0], {Left, Bottom}
},
{Left, Bottom},
"ClosingActions" -> {"EvauatorQuit", "OutsideMouseClick"}
];
makeTemporaryNotebookFooter[
Pane[Dynamic[a], {Automatic, 50}, Alignment -> Center]]
You can add whatever interface you like in there. And you can make it permanent or stick to the left / right hand sides of the notebook, too.
