我试图在另外两个面板的顶部放置两个面板,以便位置完全匹配。这将允许我在之前(底部)面板的顶部进行绘制。这样做的原因是,我实现了“拖动矩形”缩放功能,因此在面板上,用户将拖动鼠标以绘制矩形,然后面板将充满该矩形的内容。但是,我现在决定在用户拖动矩形时,将其包含在可视化表示中。
由于我(假设)无法在底部面板上绘制矩形,因为它上面已经有一个复杂的油漆,我想我可以将它绘制到另一个面板上,我将放置在顶部。(如果有更简单的方法,请大声喊叫!)
我很高兴我能够使用BorderLayout/GridLayout组合将面板放置到正确的位置,而不需要绝对定位,但是Set不透明方法在我添加的三个面板上都不起作用。有人知道这是为什么吗?
非常感谢提前,代码如下:
public void initiate() {
JPanel panel1 = new JPanel();
mandPanel mandDisplay = new mandPanel();
juliaPanel juliaDisplay = new juliaPanel();
JPanel detailsPanel = new JPanel();
JPanel bottomDetails = new JPanel();
JPanel panelForDisplays = new JPanel();
JPanel listenerPanelHolder = new JPanel();
JPanel listenerPanel = new JPanel();
JPanel blankPanel = new JPanel();
panelForDisplays.setLayout(new GridLayout(1,2));
detailsPanel.setLayout(new FlowLayout());
bottomDetails.setLayout(new FlowLayout());
panel1.setLayout(new BorderLayout());
panelForDisplays.add(mandDisplay);
panelForDisplays.add(juliaDisplay);
listenerPanelHolder.setOpaque(false);
listenerPanel.setOpaque(false);
blankPanel.setOpaque(false);
listenerPanelHolder.setLayout(new GridLayout(1,2));
listenerPanelHolder.add(listenerPanel);
listenerPanelHolder.add(blankPanel);
panel1.add(detailsPanel,BorderLayout.NORTH);
panel1.add(panelForDisplays,BorderLayout.CENTER);
panel1.add(listenerPanel,BorderLayout.CENTER);
panel1.add(bottomDetails, BorderLayout.SOUTH);
setContentPane(panel1);
setSize(width*2, height);
setResizable(false);
this.addWindowListener(new onClose(savedJulias));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
PS:为了避免混乱,省略了很多代码,但是如果有人认为他们可以用更多的代码来解决问题,请说!谢谢:)
您可以使用JLayeredPane
将一个组件置于另一个组件的顶部。你可以查查这个
首先,在BorderLayout中添加两个组件。“中心位置”将第一个零部件替换为第二个零部件,因此第二个零部件不覆盖第一个零部件,而是将其替换。根据BorderLayout API:
每个区域只能包含一个组件,。。。
尽管如此,由于我对您的问题有更详细的了解,我认为您最好的解决方案不是使用JLayeredPane或覆盖两个jpanel。事实上,最好的解决方案是直接在显示JPanel的图像上绘制。这并不难做到,也不应该使代码过于复杂。例如
我想给图表背景一个透明的外观(不是完全透明但有一点点)。这是我的代码。我添加了几行代码来增加透明度,但我想并没有变得透明。写完这些代码行后,图表backgound显示为灰色。
问题内容: 我有3个JPanels,我想将它们全部放在一个JPanel中。我将GridBagLayout用于主面板。但是只添加了一个面板。为什么会这样呢? 定制程序方法是将项目添加到这些面板中的方法。 问题答案: 我不确定,但是我认为您需要在GridBagLayout中添加一个GridBagConstraints。尝试查看此站点,以获取有关如何使用GridBagLayout的想法: 链接 或者也许
我有一个深灰色的,上面有一个。我将新颜色(0、0、0、5f)设置为标签的背景,并使用按钮多次更改文本。问题是,每次文本更改时,前一个文本仍保留在新文本后面。我将文本从“123456789”改为“1234567”、“12345”和“123”。以下是截图: 我该如何摆脱这个“阴影”?
我正在构建一个Java程序。该程序的核心在JFrame中可视化,其中包含一个JMenuBar和各种JMenuItem和JMenu。关键是我在所有框架中添加了一个centralPanel,但是如果我在centralPanel中添加了一些内容,那么只有在调整主框架的大小、缩小或放大它时,它才会显示出来!代码如下: 这是构造函数: 在这里,我添加了中央面板,在这里,在ActionListener中,我试
我有Point2D类作为基类,为了存储点列表,我通常使用,但现在我想在中添加额外的方法和一些属性,比如用于打印的ToString方法,基于特定坐标的排序,用于筛选点的特定方法,我不想使用扩展方法。 我创建了一个新的类,它继承了类,它在正常情况下工作很好,但是当使用FindAll函数时,它现在返回但我希望它返回。我知道我可以编写自己的方法来接受谓词委托,但这是太多的工作了。
我添加了一个名为MyEditorPanel的自定义面板,它将JPanel扩展到JTabbedPanel,并希望在每个选项卡上都有一个关闭按钮,为此,我使用了以下代码并使用了ButtonTabbedComponent.java的ButtonTabbedComponent.java 但是我想在关闭之前保存MyEditorPane中的文本,我怎么知道单击关闭按钮时哪个MyEditorPane将要关闭 当