Set the JPanel size to fill parent with little margin

后端 未结 4 801
遇见更好的自我
遇见更好的自我 2021-01-07 10:15

I have two Jpanel (JpanelLeft and JpanelLeftContent) how can i make the JpanelLeftContent fill parent size with a little margin on the lef

相关标签:
4条回答
  • 2021-01-07 10:29

    To make a JPanel appear rounded, you need to make your own class that extends JPanel, override paintComponent and draw the panel as an ellipse Javadoc here This will create a customized object which is an JPanel.

    When you specify the size of your ellipse, you want to get the Y and X values from the parent panel (since you will be adding your ellipse ontop of another panel) and then subtract the number of pixels you desire from the X-axis. This could be achived by passing those values to the "ellipse panel" constructor.

    0 讨论(0)
  • 2021-01-07 10:34

    Do try this code example :

    import java.awt.*;
    import javax.swing.*;
    
    public class InsetTesting extends JFrame
    {
        private void createAndDisplayGUI()
        {
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            setLocationByPlatform(true);
    
            JPanel contentPane = new JPanel();
            contentPane.setOpaque(true);
            contentPane.setBorder(BorderFactory.createLineBorder(
                                        Color.DARK_GRAY.darker(), 5, true));
            contentPane.setBackground(Color.WHITE);
    
            add(contentPane, BorderLayout.CENTER);
            pack();
            setVisible(true);
        }
    
        public Insets getInsets()
        {
            return (new Insets(30, 20, 10, 20));
        }
    
        public Dimension getPreferredSize()
        {
            return (new Dimension(200, 400));
        }
    
        public static void main(String\u005B\u005D args)
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    new InsetTesting().createAndDisplayGUI();
                }
            });
        }
    }
    

    Here is the output of the same :

    INSETS

    0 讨论(0)
  • 2021-01-07 10:35

    ..how can i make the JpanelLeftContent look like a rounded rectangle as shown in the picture.

    See TextBubbleBorder for a start.

    Obviously you'd need to remove the little v at the bottom, & shove the bottom border further down. The code is not comprehensively tested, and will require further tweaks and fixes. 'Batteries not included'.

    0 讨论(0)
  • 2021-01-07 10:41

    Take a look at how Borders work. Especially
    BorderFactory.createEmptyBorder(int top, int left, int bottom, int right) might be helpfull.

    0 讨论(0)
提交回复
热议问题