- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 2 个 JPanel 放入 borderLayout 中。这样,一个 JPanel 的大小为 pane1(600,600),另一个 JPanel 的大小为 pane2(200,600)。我希望将它们打包,使大的在左边,另一个在右边。我正在设置每个 jpane 的大小,但看起来它们都占据了完整的空间并且彼此重叠。
我是个新手,不知道出了什么问题。任何帮助表示赞赏。 JFrame frame = new JFrame("Simple Graph");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
int pane1_width = FRAME_WIDTH-200;//800-200
Pane1 myPlots = new Pane1(graph_panel_size, FRAME_HEIGHT);<br/>
frame.add(myPlots);
Pane2 simpleInfo = new Pane2(200,FRAME_HEIGHT);
frame.add(simpleInfo);
frame.pack();
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setResizable(false);
frame.setVisible(true);
这是一个基础框架类。对于 JPanel
public Pane2(int width,int height){<br/>
this.setSize(width,height);
Border blackline = BorderFactory.createTitledBorder("ola");
this.setBorder(blackline);
另一个面板也有类似的构造函数。但两个 Jpanels 相互重叠,我无法将它们分开放置。
最佳答案
问题是您正在调用setSize()
。当使用 LayoutManager
时(你绝对应该这样做),使用 setSize/setBounds/setLocation
是完全没有用的。
此外,不建议调用 setPreferredSize()/setMinimumSize/setMaximumSize
,并且可能会适得其反。
或者您的组件有充分的理由具有给定的大小(例如,因为您正在执行自定义绘制),那么您应该覆盖 getPreferredSize
,或者您根本不需要执行任何操作,并且仅使用适当的 LayoutManager
。
您还可以check out the tutorial on LayoutManager of Oracle
查看此示例,其中覆盖了 getPreferredSize()
:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TestCustomPainting {
private static class MyTriangle extends JPanel {
private final int width;
private final int height;
public MyTriangle(int width, int height) {
this.width = width;
this.height = height;
}
@Override
public Dimension getPreferredSize() {
return new Dimension(width, height);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GREEN);
g.fillPolygon(new int[] { 0, getWidth(), 0 }, new int[] { 0, 0, getHeight() }, 3);
}
}
protected static void initUI() {
JFrame frame = new JFrame("test");
frame.add(new MyTriangle(200, 45), BorderLayout.EAST);
frame.add(new MyTriangle(85, 600), BorderLayout.WEST);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initUI();
}
});
}
}
注意:我必须承认,还有更有趣的东西可以画:-)
关于java - 将 2 个 jpanels 放入 borderlayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29084308/
来自 BorderLayout javadoc: A border layout lays out a container, arranging and resizing its components
我试图在 BorderLayout 的中心添加一个 GridBagLayout,但是当我将它添加到中心时,它没有出现。 尽管如此,如果我将它放在 BorderLayout 中的另一个位置,它会正确显示
我想制作一个带有 BorderLayout 的程序,其中中心和东部在图形上是分开的。我尝试了以下操作,但不幸的是分隔符位于 JFrame 的左侧,而不是在 centerPanel 和 rightPan
我试图将两个 JButton 彼此相邻放置在 JFrame 的中心,当 JFrame 已重新调整大小。 为此,我将两个按钮放在一个带有 FlowLayout 的面板中,然后将其放置在一个带有中心 Bo
我正在尝试设置披萨订单表单的框架,但在使用 orderPanel 和 ButtonPanel 时遇到问题。我可以让其中之一出现,但不能同时出现?在我发布的当前代码中,显示了按钮,但未显示文本框/ord
我正在从事一个计算机科学项目,我遇到了一些边框布局问题:这是我的配置(简化) public class MainPanel extends JPanel{ JSplitPane Pcenter
我决定编写一个小型 Java 程序来试验 BorderLayout,因为我正在开发一个 Java 游戏,我需要同时将 2 个对象放置在一个 JFrame 中,我问的每个人都说我需要 BorderLay
我一直在尝试在这个的死点制作一个 2x2 网格,但我做不到。网格要么会覆盖其余部分,要么会适合,但我只能看到最后一个按钮。 import javax.swing.*; import java.awt.
我正在编写一个程序,该程序旨在使用在窗口的西侧和东侧有两个按钮的 BorderLayout。不知怎的,中心有一个很大的差距。有什么方法可以消除这个间隙并使两个按钮彼此相切吗?下面我附上了我的代码。如有
我正在制作一个标题栏,并将标题放在左侧,将两个按钮放在右侧。但如果我对两个按钮都使用 BorderLayout.EAST,则只会显示最后一个按钮。我可以让两者都可见吗?我尝试使用 JPanel,但它会
我分别在 MouseEnter 和 MouseExit 上添加和删除 JButton。这工作正常,但是当按钮添加到面板时,它出现在右上角,而不是指定的 BorderLayout.SOUTH 位置。 框
我正在尝试创建一个可以在其中绘画的 Canvas ,以及一个将 Canvas 重置为空状态的按钮。然而,使用 BorderLayout 我的按钮会被复制,第二个按钮是第一个按钮的图像副本,但看起来仍然
我很难弄清楚为什么这个边框布局仍然像流布局一样...... 我先尝试了这个: JPanel canvas = new JPanel(new BorderLayout()); add(canvas);
我是 Java GUI 的新手,目前正在致力于创建微波 GUI。我正在尝试将面板放置在面板中,但它并没有真正按照我认为的那样工作。我正在使用 BorderLayout,基本上将一个面板放入 Borde
我尝试做以下事情: 使用 BorderLayout 将组件添加到 JFrame 向 JFrame 添加另一个组件 我希望新组件能够“覆盖”旧组件,因为我使用的是 BorderLayout。如果我在调用
我有如下代码: public static void main(String[] args) { JFrame f = new BorderTest(); JPanel p = new
据我了解,将组件添加到 BorderLayout 时,它们会占据整个隔间的大小。将 panel1 添加到 contentPane 的北部时,似乎是下面的情况。但是,当我随后将 panel2 放在 pa
我在使用 BorderLayout 时遇到问题,但首先,这是我的 GUI 设置: 如您所见,我的 JFrame 中有 3 个不同的组件。添加 JMenu 和 JList 效果很好。但是我的 JPane
我的问题是: 如何将 JPanel 添加到东南部的 BorderLayout? 这是我的按钮组: buttonsPanel = new JPanel(); buttonsPanel.setLayout
我想要一个 JFrame,在左侧和右侧有一个黑色边框,宽度为 withfOfJFrame/10。 现在,我的尝试看起来像这样: JFrame f = new JFrame(); f.setSize(8
我是一名优秀的程序员,十分优秀!