我需要在对话框中显示菜单。然而,当JPopupMenu隐藏在边框中时,当barder插入很大时。
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
public class PopupMenuBorderInsetsBug {
public static void main(String[] args) {
JDialog popupDialog = new JDialog();
popupDialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
popupDialog.getRootPane().setBorder(new BorderWithInsets(Color.RED));
JButton btnShowMenu = new JButton("Show Menu");
JPopupMenu menu = new JPopupMenu();
menu.add(new JMenuItem("Menu Item"));
btnShowMenu.addActionListener(e -> menu.show(btnShowMenu, 0, btnShowMenu.getHeight()));
popupDialog.add(btnShowMenu);
popupDialog.pack();
popupDialog.setVisible(true);
}
private static class BorderWithInsets extends LineBorder {
public BorderWithInsets(Color color) {
super(color);
}
@Override
public Insets getBorderInsets(Component c) {
return new Insets(10, 10, 30, 10);
}
}
}
上面的代码创建了一个对话框,当点击按钮时,菜单应该会出现,但它会隐藏在边框内。像这样
如果边框的插入被更改,因为返回新的插入(10,10,10,10);
时,菜单会显示,不会有任何问题。像这样
问题是由于根窗格的错误使用,您必须将组件放在JDialog的ContentPane中。
请参阅main
中的更改:
public static void main(String[] args) {
JDialog popupDialog = new JDialog();
popupDialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
//Use a JPanel as container and set insets and content on it
JPanel content=new JPanel();
content.setBorder(new BorderWithInsets(Color.RED));
JButton btnShowMenu = new JButton("Show Menu");
JPopupMenu menu = new JPopupMenu();
menu.add(new JMenuItem("Menu Item"));
btnShowMenu.addActionListener(e -> menu.show(btnShowMenu, 0, btnShowMenu.getHeight()));
content.add(btnShowMenu);
//Set the panel as contentPane for the dialog
popupDialog.setContentPane(content);
popupDialog.pack();
popupDialog.setVisible(true);
}
如何隐藏gg-editor边箭头?
问题内容: 我要做的是,如何在显示警报框后的特定秒数内自动隐藏它? 我所知道的是 不需要这个,我想在几秒钟内显示警报后消失。 所需方案: 显示警报 在2秒内隐藏/终止警报 问题答案: 警报无法实现此功能。但是,您可以使用div 像这样使用:
如果侧边栏中没有内容,我想隐藏它们,不幸的是,有26.000个函数可以调用你的侧边栏,我对此并不感兴趣。我只想隐藏我的侧边栏,如果它们是空的,当它们包含小部件时显示它们。 现在我不确定是应该使用get_sidebar函数还是dynamic_sidebar函数。另外,我想知道我是否应该使用侧边栏的名称。php调用它或函数中的ID。php
问题内容: 我有一个div,我希望将其部分定位在屏幕外,如下所示: 但这会增加页面的大小,使其可以向右滚动。有什么办法可以使该div的一半隐藏并防止滚动查看它? 问题答案: 是的,只需使用创建一个封闭的div ,如下所示:
我在下面的代码中尝试实现的是,默认情况下,当我单击home复选框时,不显示home标题和段落,然后显示它 当我解开它的时候,它就隐藏起来了 我的功能在下面的代码中运行良好,但我无法实现这一点 当我点击home复选框,然后段落显示,当取消点击,然后隐藏 检查我下面的代码,当我运行文件时,我在我的代码中发布,默认情况下,主页段落显示。 但我想实现后点击复选框,然后显示所有的东西。并且我想尝试当我运行页
我有两个div互相覆盖。我只想从覆盖区域删除边框。请看下面的示例代码 此代码将输出为: 但我希望输出为: 我怎样才能做到这一点呢?请帮帮忙。 注意:我正在使用下拉菜单。第一个div实际上用于菜单名称,第二个div用于菜单列表。