Creé una aplicación de dibujo que le permite al usuario elegir los colores de la pluma, pero tengo problemas con el diseño. Creé varios paneles, pero cuando lo ejecuto, todos los botones todavía están en un panel. ¿Hay alguna manera de arreglar esto?
public class DrawingGUI extends JPanel { private JRadioButton penColor1, penColor2, penColor3, randomPenColor, eraser; private JButton clearButton; private static Color defaultColor = Color.BLACK; private static boolean isRandomSelected = false; private final static int DIAMETER = 12; protected static boolean canDraw; private ArrayList<PointTracker> points; public DrawingGUI() { setBackground(Color.WHITE); points = new ArrayList<PointTracker>(); JPanel drawPanel = new JPanel(); JLabel instructions = new JLabel("Enter your information:"); JPanel instructionsPanel = new JPanel(); instructionsPanel.add(instructions); drawPanel.add(instructionsPanel); JPanel colorPanel1 = new JPanel(); penColor1 = new JRadioButton("Red"); drawPanel.add(penColor1); penColor1.addActionListener(new ToolListener()); drawPanel.add(colorPanel1); JPanel colorPanel2 = new JPanel(); penColor2 = new JRadioButton("Blue"); drawPanel.add(penColor2); penColor2.addActionListener(new ToolListener()); drawPanel.add(colorPanel2); JPanel colorPanel3 = new JPanel(); penColor3 = new JRadioButton("Yellow"); drawPanel.add(penColor3); penColor3.addActionListener(new ToolListener()); drawPanel.add(colorPanel3);...(So on)todos los botones todavía están en un panel
Por que eso es un problema. Eso es lo que esperaría que sucediera.
¿Por qué estás creando un panel separado para cada botón? El objetivo de usar el panel es agrupar lógicamente los componentes.
Así que espero que tengas algo como:
JPanel buttonsPanel = new JPanel(); buttonsPanel.add( button1 ); buttonsPanel.add( button2 ); buttonsPanel.add( button3 ); JPanel drawPanel = new JPanel(); drawPanel.add( component1 ); drawPanel.add( component2 ); frame.add(drawPanel, BorderLayout.PAGE_START); frame.add(buttonsPanel, BorderLayout.PAGE_END);Arriba hay un ejemplo simple de "anidar" dos paneles en un marco. Cada uno de los paneles puede usar un administrador de diseño diferente según sea necesario.
Para ver un ejemplo práctico de este enfoque, puede consultar Enfoques de pintura personalizados . Ambos ejemplos de código muestran cómo puede "anidar" un panel de dibujo y un panel de botones en un marco.