如何将 JMenuBar 添加到 JTextArea?
How do I add JMenuBar to JTextArea?
我有一个JTextArea
,我想给它加一个JMenuBar
,但是好像不行。
ta = new JTextArea();
ta.setBackground(Color.RED);
// ta.setLayout(null); I tried with a null layout and
non-null
pane = new JScrollPane(ta);
pane.setBounds(Main.WIDTH - (Main.WIDTH - 20), Main.HEIGHT - (Main.HEIGHT - 20), Main.WIDTH - 60, Main.HEIGHT - 500);
bar = new JMenuBar();
bar.setBounds(0, 0, ta.getWidth(), 20); // This won't be there if
// there is a non-null layout.
ta.add(bar); // I also tried pane.add(bar); that didn't work either.
有什么办法可以把JMenuBar
加到JTextArea
上吗?
- 将 JTextArea 放入 JScrollPane -- 总是
- 将 JScrollPane 添加到使用 BorderLayout
的 JPanel 的 BorderLayout.CENTER 位置
- 将 JMenuBar 添加到使用 JPanel 的同一 BorderLayout 的 BorderLayout.PAGE_START 位置
完成
例如,
JTextArea ta = new JTextArea(40, 20); // give columns and rows
JScrollPane scrollPane = new JScrollPane(ta);
JPanel borderLayoutPanel = new JPanel(new BorderLayout());
borderLayoutPanel.add(scrollPane, BorderLayout.CENTER);
JMenuBar menuBar = new JMenuBar();
// add menu's to the menu bar here
borderLayoutPanel.add(menuBar, BorderLayout.PAGE_START);
旁注:
- 您调用的代码
ta.getWidth()
可能会返回宽度值 0,因为它似乎是在 呈现 JTextArea 之前被调用的。
- 您几乎从不 想要将组件直接添加到 JTextArea 本身,因为这可能会干扰文本区域的功能。
我有一个JTextArea
,我想给它加一个JMenuBar
,但是好像不行。
ta = new JTextArea();
ta.setBackground(Color.RED);
// ta.setLayout(null); I tried with a null layout and
non-null
pane = new JScrollPane(ta);
pane.setBounds(Main.WIDTH - (Main.WIDTH - 20), Main.HEIGHT - (Main.HEIGHT - 20), Main.WIDTH - 60, Main.HEIGHT - 500);
bar = new JMenuBar();
bar.setBounds(0, 0, ta.getWidth(), 20); // This won't be there if
// there is a non-null layout.
ta.add(bar); // I also tried pane.add(bar); that didn't work either.
有什么办法可以把JMenuBar
加到JTextArea
上吗?
- 将 JTextArea 放入 JScrollPane -- 总是
- 将 JScrollPane 添加到使用 BorderLayout 的 JPanel 的 BorderLayout.CENTER 位置
- 将 JMenuBar 添加到使用 JPanel 的同一 BorderLayout 的 BorderLayout.PAGE_START 位置
完成
例如,
JTextArea ta = new JTextArea(40, 20); // give columns and rows
JScrollPane scrollPane = new JScrollPane(ta);
JPanel borderLayoutPanel = new JPanel(new BorderLayout());
borderLayoutPanel.add(scrollPane, BorderLayout.CENTER);
JMenuBar menuBar = new JMenuBar();
// add menu's to the menu bar here
borderLayoutPanel.add(menuBar, BorderLayout.PAGE_START);
旁注:
- 您调用的代码
ta.getWidth()
可能会返回宽度值 0,因为它似乎是在 呈现 JTextArea 之前被调用的。 - 您几乎从不 想要将组件直接添加到 JTextArea 本身,因为这可能会干扰文本区域的功能。