我正在尝试创建一个框架,该框架在同一框架的顶部有一个图形面板(通过布局),在其下方有一个按钮/标签面板。到目前为止,我似乎已经能够将它们放在同一个框架上,但与按钮/标签面板相比,图形面板非常小......我无法发布照片,但它几乎就像大小是(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);
}
关于Java 图形、图形面板和按钮面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343667/