Как создать эту кнопку над другой кнопкой? - PullRequest
0 голосов
/ 28 января 2019

В качестве заголовка я хочу создать две кнопки в java swing, и эти две кнопки могут перекрывать друг друга (как изображение).Я искал в интернете, но не смог его найти.

image

Большое спасибо

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Вы можете использовать OverlayLayout здесь.

SSCCE (с комментариями внутри) будет:

import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.OverlayLayout;
import javax.swing.SwingUtilities;

public class OverlayLayoutExample extends JFrame {
    JPanel overlayoutPanel;
    JButton jButton2, jButton1;

    public OverlayLayoutExample() {

        overlayoutPanel = new JPanel() {
            @Override
            public boolean isOptimizedDrawingEnabled() {
                //Required to have always visible both components
                return false;
            }
        };

        OverlayLayout overlay = new OverlayLayout(overlayoutPanel);
        overlayoutPanel.setLayout(overlay);
        jButton1 = new JButton("jButton");
        Dimension d1 = new Dimension(350, 100);
        jButton1.setMaximumSize(d1);
        jButton1.setAlignmentX(0.7f); //Some X-Y values, play with them
        jButton1.setAlignmentY(0.65f); //Some X-Y values, play with them

        jButton2 = new JButton("jButton2");
        Dimension d2 = new Dimension(100, 25);
        jButton2.setMaximumSize(d2);
        jButton2.setAlignmentX(0.01f); //Some X-Y values, play with them
        jButton2.setAlignmentY(0.01f); //Some X-Y values, play with them

        overlayoutPanel.add(jButton2); //First the top component
        overlayoutPanel.add(jButton1); //Then the above component

        getContentPane().add(overlayoutPanel);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 300);
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(() -> new OverlayLayoutExample().setVisible(true));
    }
}

Подробнее о isOptimizedDrawingEnabled() можно найти здесь .

Предварительный просмотр:

enter image description here

0 голосов
/ 28 января 2019

Вы можете сделать это, используя многослойную панель JFrame, например:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;

public class ButtonOnTop
{
  public static void main(String[] args)
  {
    JButton button1 = new JButton("jButton1");
    button1.setBounds(30, 50, 260, 160);

    JButton button2 = new JButton("jButton2");
    button2.setBounds(150, 150, 100, 40);

    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLayeredPane layeredPane = f.getLayeredPane();
    layeredPane.add(button1, Integer.valueOf(0));
    layeredPane.add(button2, Integer.valueOf(1));

    f.setBounds(300, 200, 400, 300);
    f.setVisible(true);
  }
}
0 голосов
/ 28 января 2019

Вы можете просто сделать это, установив макет JFrame на Absolute Layout и добавив JButton поверх другого JButton.Убедитесь, что маленькая кнопка находится над другой кнопкой навигатора.


enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...