Компоненты GridBagLayout находятся в неправильном положении - PullRequest
0 голосов
/ 01 сентября 2018

Мой код предназначен только для JButton вверху, но когда я добавляю изображение, оно идет поверх изображения, что хорошо, но вместо того, чтобы быть сверху, оно находится посередине, и вы не можете получить значение для сетки, так что я не знаю, как заставить его пойти на вершину. У меня есть много кнопок на контейнере, но я просто добавлю код для одной из них, чтобы сделать ее короче, но если вам нужен полный код, я предоставлю его. Спасибо вот мой код

public void add(Container pane){
setBackground(Color.black);

    pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

    URL resource = getClass().getResource("Graphitebackground.v2.jpg");

    ImageIcon i2 = new ImageIcon(resource);
    URL resource3 = getClass().getResource("Graphitebackground.v4.jpg");

    ImageIcon i3 = new ImageIcon(resource3);
    URL resource1 = getClass().getResource("Graphitebackground.v3.jpg");
    ImageIcon i1 = new ImageIcon(resource1);  
    JLabel background = new JLabel(i2);
    background.setSize(new Dimension(1000,1000));

    background.setVisible(true);
    background.setLayout(new GridBagLayout());
    JButton button;
    pane.setLayout(new GridBagLayout());

    GridBagConstraints c = new GridBagConstraints();

    //natural height, maximum width
    c.fill = GridBagConstraints.HORIZONTAL;           

    JButton label2 = new JButton(i1);

    c.weightx = 0.5;

    label2.setText("Level1");
    label2.setPreferredSize(new Dimension(100,100));

    c.fill = GridBagConstraints.HORIZONTAL;
    c.gridx = 0;
    c.gridy = 0;
    label2.setForeground(Color.RED);
    label2.setFont(new Font("Arial", Font.BOLD,100));
    label2.setHorizontalTextPosition(JButton.CENTER);
    label2.setVerticalTextPosition(JButton.CENTER);
    label2.setBorderPainted(false);
      label2.addMouseListener(new java.awt.event.MouseAdapter(){
         public void mouseEntered(java.awt.event.MouseEvent evt){
            label2.setBorderPainted(true);
            label2.setBorder(BorderFactory.createLineBorder(Color.red,3)); 
        }
        public void mouseExited(java.awt.event.MouseEvent evt){
             label2.setBorderPainted(false); 
        }
        });
        background.add(label2,c);
        pane.add(background);
}
...