如何在一帧内添加GUI面板和DrawPanel?

时间:2020-06-18 13:36:36

标签: java swing jframe jpanel

我希望在一帧中在此处添加两个面板,我想在右侧添加一些按钮和文本字段来编辑绘图面板类,但是我不知道如何将GUI组件添加到{{1} }。每当我尝试将GUI组件添加到panel2时,它就无法正常工作,而且我也不明白为什么。

panel2

这是主要的,我还有一个名为import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Main { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setTitle("WaferMap"); frame.setSize(1286, 829); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.setVisible(true); Container contentPane = frame.getContentPane(); contentPane.setLayout(new BorderLayout()); DrawingPanel panel1 = new DrawingPanel(); JPanel panel2 = new JPanel(); frame.add(panel1, BorderLayout.WEST); panel1.setPreferredSize(new Dimension(1080, 800)); final JButton button = new JButton(); panel2.add(button, BorderLayout.EAST); button.setBounds(50,50,100,50); frame.add(panel2, BorderLayout.EAST); panel2.setPreferredSize(new Dimension(200, 800)); } } 的类,其中有一个drawingPanel

1 个答案:

答案 0 :(得分:0)

  1. 不要使用setPreferredSize()。布局管理器的工作是根据布局管理器的规则和添加到面板中的组件的首选大小来计算面板的首选大小。

  2. 不要使用setSize()。而是使用pack()。框架的大小将根据添加到框架的所有组件的首选大小确定。

  3. 真正的问题是,默认情况下,组件的大小为(0. 0),因此无需绘制任何内容。布局管理器的工作是为组件指定大小/位置。问题是您在将组件添加到面板之前使框架可见,因此从未调用过布局管理器。因此解决方案是,在将所有组件添加到框架之后,应调用pack()setVisible(true)语句。

请注意,本教程在Custom Painting上也有一个部分,您应该阅读该部分,以便正确实施绘画以确保DrawingPanel具有首选的尺寸。

相关问题