【问题标题】:How do I resize my JMenuItem to fit a JButton?如何调整 JMenuItem 的大小以适合 JButton?
【发布时间】:2012-12-11 21:24:24
【问题描述】:

这是我正在使用的代码:

JMenu menu = new JMenu("Menu");

JMenuItem item = new JMenuItem("Add");
item.add(new JButton("SOMETHING A BIT WORDY"));
menu.add(item);

// ... 
JMenuBar menuBar = new JMenuBar();
menuBar.addMenu(menu);
JFrame frame = new JFrame();
frame.setJMenuBar(menuBar);

// ...
frame.pack();
frame.setVisible();

但是,按钮(在菜单项内部)看起来很小,并且仅包含文本“...”,当按钮的大小无法适应预期的文本时,会使用该文本。有什么方法可以让我的 JMenuItem “增长”以适合我的 JButton(或 JTextArea、JLabel 或任何可能的组件)?

【问题讨论】:

  • 为什么要在菜单中放置一个按钮?
  • 我实际上想放置一个 JTextField 和一个 JButton,以允许用户拥有一个接受输入的上下文菜单。
  • 我推荐一个菜单项,它调用一个小对话框来包含文本字段和按钮。
  • 改为弹出对话框。菜单中的按钮是一种奇怪的组合,但菜单中的文本区域将无法使用。
  • 你真的想要一个菜单​​,或者你可以用一个 JPopup 来代替吗?也就是说,您需要文本字段/按钮旁边的其他菜单项吗?

标签: java swing jbutton jmenu


【解决方案1】:

我完全同意其他人发布他们的 cmets,在菜单项中放置一个按钮可能是一个奇怪的组合,如果你坚持这样做,setPreferredSize 可以解决你的问题。 我使用了一个糟糕的硬代码实现,如果有人知道如何动态设置宽度,也请指导我。 :P 提前谢谢。

JMenu menu = new JMenu("Menu");

JMenuItem item = new JMenuItem("Add");
item.add(new JButton("SOMETHING A BIT WORDY"));
item.setLayout(new FlowLayout()); // set FlowLayout for item
item.setPreferredSize(new Dimension(200, 100)); // hard code implementation :-(
menu.add(item);

// ... 
JMenuBar menuBar = new JMenuBar();
menuBar.add(menu);
JFrame frame = new JFrame();
frame.setJMenuBar(menuBar);

// ...
frame.pack();
frame.setVisible(true);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 2014-02-02
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多