我决定编写一个小型Java程序来试验BorderLayout,因为我正在开发一个Java游戏,我需要在同一时间将2个对象放在一个JFrame中,我问的每个人都说我需要BorderLayout这样做。
所以我编写的Java程序应该在JFrame上放置一个JButton,并且放置一个图形组件(在这种情况下是一个矩形)。问题是,只有按钮显示,如下面的图像链接所示:
由于我的声誉统计数据不佳,我无法发布实际图像。
以下是代码:
main.java - >主方法类+ 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);
}
}
Infout.java - > Rectangle构造函数类
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的最佳选择吗?
谢谢!
抗体
答案 0 :(得分:2)
您需要覆盖getPreferredSize()
方法,以便布局管理器可以确定组件的正确大小。
How do I do that?
阅读Custom Painting上Swing教程中的部分,了解有关自定义绘制的更多信息,包括显示如何覆盖getPreferredSize()
方法的工作示例。