我决定编写一个小型 Java 程序来试验 BorderLayout,因为我正在开发一个 Java 游戏,我需要同时将 2 个对象放置在一个 JFrame 中,我问的每个人都说我需要 BorderLayout来做到这一点。
所以我编写的Java程序应该在JFrame上放置一个JButton,并且还放置一个图形组件(在本例中是一个矩形)。问题是,只显示了按钮,如下面的图片链接所示:
由于我的声誉统计数据较低,我无法发布实际图像。
这是代码:
main.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/