java - BorderLayout 只显示一个对象

标签 java swing jpanel border-layout preferredsize

我决定编写一个小型 Java 程序来试验 BorderLayout,因为我正在开发一个 Java 游戏,我需要同时将 2 个对象放置在一个 JFrame 中,我问的每个人都说我需要 BorderLayout来做到这一点。

所以我编写的Java程序应该在JFrame上放置一个JButton,并且还放置一个图形组件(在本例中是一个矩形)。问题是,只显示了按钮,如下面的图片链接所示:

http://prntscr.com/3m5ek6

由于我的声誉统计数据较低,我无法发布实际图像。

这是代码:

ma​​in.java --> main方法类+ JFrame/JPanel/JButton构造函数

import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class main {

public static void main(String[] args) {

    Infout m = new Infout();
    JFrame f = new JFrame();
    JPanel start = new JPanel();
    JPanel start2 = new JPanel();

    start.add(m);
    start2.add(new JButton("Hi"));

    f.add(start,BorderLayout.LINE_START);
    f.add(start2, BorderLayout.LINE_END);
    f.setVisible(true);
    f.setSize(300, 400);

}

}

Infoout.java --> 矩形构造函数类

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;


public class Infout extends JPanel{

public void paintComponent(Graphics g){
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;
    g2.fill(new Rectangle2D.Double(140, 270, 5, 300));
}

}

谁能告诉我出了什么问题吗?另外,使用 BorderLayout 是将多个静态和/或动态对象添加到 JFrame 的最佳选择吗?

谢谢!

抗体

最佳答案

您需要重写 getPreferredSize() 方法,以便布局管理器可以确定组件的正确大小。

我该怎么做?

阅读 Swing 教程中关于 Custom Painting 的部分有关自定义绘画的更多信息,包括演示如何重写 getPreferredSize() 方法的工作示例。

关于java - BorderLayout 只显示一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23847066/

相关文章:

java - JTable、RowFilter 和 RowFilter.Entry

java - 停止 JPanel RoundedBorder 移动 JLabel

Java - 具有相同参数的多个构造函数

java - 如何在java中更好地编写开关代码(精确数字的平滑移动)

java - 我可以使用添加到 JToolBar 的 JButton 来上下滚动 JPanel 吗?

java - 带有 ListSelectionListener 的奇怪随机 NPE

java - JPanel 中行的动态宽度和固定高度

java - drawImage() 方法将图像绘制得较小,无论图像大小如何

java - Controller 是否创建新 View ?

java - 我如何确定 JDialog 是否有 child ?