gpt4 book ai didi

java - BorderLayout 只显示一个对象

转载 作者:行者123 更新时间:2023-12-02 05:48:09 25 4
gpt4 key购买 nike

我决定编写一个小型 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com