java – 如何将组件放在现有组件正下方的JLayeredPane中?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何将组件放在现有组件正下方的JLayeredPane中?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1952字,纯文字阅读大概需要3分钟。
内容图文
![java – 如何将组件放在现有组件正下方的JLayeredPane中?](/upload/InfoBanner/zyjiaocheng/808/d7c248a69c7b42eb86fe543b86addda4.jpg)
我有一个JTextField,就在它下面我想要显示一个放在JLayeredPane中的JLabel(稍后我会用它来进行自动建议).
如何将JLabel放在JTextField正下方的JLayeredPane中?
这是我的一些代码,以下屏幕截图中显示的当前结果如下:
public static void main(String[] args) {
JTextField field = new JTextField();
JLabel lbl = new JLabel("Hello");
lbl.setBackground(Color.YELLOW);
lbl.setOpaque(true);
JLayeredPane layeredPane = new JLayeredPane();
layeredPane.setLayout(new GridLayout(0,1));
layeredPane.add(lbl, (Integer) (JLayeredPane.POPUP_LAYER - 10));
layeredPane.setPreferredSize(field.getPreferredSize());
JPanel panel = new JPanel(new BorderLayout());
panel.add(field, BorderLayout.NORTH);
panel.add(layeredPane, BorderLayout.SOUTH);
JFrame frame = new JFrame();
frame.add(panel);
frame.setSize(200, 360);
frame.setVisible(true);
}
第二次尝试:
public static void main(String[] args) {
JTextField field = new JTextField();
JLabel lbl = new JLabel("Hello");
lbl.setBackground(Color.YELLOW);
lbl.setOpaque(true);
lbl.setBounds(field.getBounds().x, field.getBounds().y,
field.getBounds().width, field.getBounds().height);
JPanel popPanel = new JPanel(new BorderLayout());
popPanel.add(lbl, BorderLayout.NORTH);
popPanel.setLocation(field.getLocation().x+10, field.getLocation().y+20);
popPanel.setPreferredSize(field.getPreferredSize());
JFrame frame = new JFrame();
JLayeredPane layeredPane = frame.getRootPane().getLayeredPane();
layeredPane.setLayout(new GridLayout(0,1));
layeredPane.add(popPanel, (Integer) (JLayeredPane.POPUP_LAYER - 10));
JPanel panel = new JPanel(new BorderLayout());
panel.add(field, BorderLayout.NORTH);
frame.add(panel);
frame.setSize(200, 360);
frame.setVisible(true);
}
解决方法:
将layeredPane添加到“CENTER”,而不是SOUTH.
但是,您对平铺窗格的理解似乎有点困惑.如果希望多个组件显示在彼此的顶部(堆叠?),则可以使用分层窗格.您仍然在二维中使用分层窗格,这是不必要的.你可以使用一个面板.
如果要弹出建议列表,则应使用JPopupMenu并将其放在文本字段下方.阅读Bringing up Popup Menus上的Swing教程中的部分.
内容总结
以上是互联网集市为您收集整理的java – 如何将组件放在现有组件正下方的JLayeredPane中?全部内容,希望文章能够帮你解决java – 如何将组件放在现有组件正下方的JLayeredPane中?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。