Java 图形、图形面板和按钮面板

标签 java swing jframe jpanel border-layout

我正在尝试创建一个框架,该框架在同一框架的顶部有一个图形面板(通过布局),在其下方有一个按钮/标签面板。到目前为止,我似乎已经能够将它们放在同一个框架上,但与按钮/标签面板相比,图形面板非常小......我无法发布照片,但它几乎就像大小是(400,10 ) 用于图形面板,(400,290) 用于按钮/标签面板。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import javax.swing.JFrame;
import javax.swing.JPanel;

 public class DoNotEnterSign extends JPanel {

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawOval(0,0,50,50);
    }}




public static void main(String args[]) 
        {
            JFrame frame2 = new JFrame();
            JPanel panel = new DoNotEnterSign();
            panel.setBackground(Color.GRAY);
            panel.setSize(100,100);
            JPanel panel2 = new JPanel();
            JButton test = new JButton("Testing");
            panel2.add(test);
            frame2.getContentPane().add(panel, BorderLayout.NORTH);
            frame2.getContentPane().add(panel2, BorderLayout.SOUTH);
            frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame2.setSize(400,300);
            frame2.setLocationRelativeTo(null);
            frame2.setVisible(true);

最佳答案

只需重写 DoNotEnterSign 类的 getPreferedSize() 方法,而不是使用 setSize(100,100);。因为根据docs它仅在没有布局管理器的情况下工作:

Set the size of the component measured in pixels. The two int arguments specify width and height, in that order. Use these methods to size a component when you are not using a layout manager.

在您的 DoNotEnterSign 旁边添加:

@Override
public Dimension getPreferredSize() {
    return new Dimension(100,100);
}

enter image description here

关于Java 图形、图形面板和按钮面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343667/

相关文章:

java - 当我更改 borderLayout 时,JPanel 不会移动

java - 动态更改字体会导致某些组件出现问题

java - 为什么网格布局中不显示按钮?

Java Swing 。前面的 Windows 从 JDialog 启动

Java 代码生成 - 有没有办法动态生成具有您想要的名称的文件夹?

java - 如何防止Java将条形码转为科学计数法

java - Maven eclipse 不添加依赖

由于时区问题,Java 应用程序无法执行

java - java中如何判断谁将文件上传到ftp?

java - 如何在Swing中自动调整窗口大小