Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JLayeredPane中使用GridBagLayout_Java_Swing_Layout_Gridbaglayout_Jlayeredpane - Fatal编程技术网

Java 在JLayeredPane中使用GridBagLayout

Java 在JLayeredPane中使用GridBagLayout,java,swing,layout,gridbaglayout,jlayeredpane,Java,Swing,Layout,Gridbaglayout,Jlayeredpane,我试图在JPanel的右上角有一个类似的小型浮动“小部件”。这是一个固定大小的组件——如果有帮助的话,想想谷歌地图视图中的指南针 我意识到JLayeredPane只对所有层使用一个布局管理器,因此认为将GBL与一起使用可能会成功: -使右上角(1,0)框非常小,并将小部件放在那里 -使内容面板的宽度/高度为2 但经过实验,GBL似乎删除了一些重叠的组件 有人能建议一种假装这种行为的方法吗?它是一个分层窗格,因此每一层都可以有一个容器,如果需要,可以使用自己的布局。我不会给JayrErdBeNe自

我试图在JPanel的右上角有一个类似的小型浮动“小部件”。这是一个固定大小的组件——如果有帮助的话,想想谷歌地图视图中的指南针

我意识到JLayeredPane只对所有层使用一个布局管理器,因此认为将GBL与一起使用可能会成功: -使右上角(1,0)框非常小,并将小部件放在那里 -使内容面板的宽度/高度为2

但经过实验,GBL似乎删除了一些重叠的组件

有人能建议一种假装这种行为的方法吗?

它是一个分层窗格,因此每一层都可以有一个容器,如果需要,可以使用自己的布局。我不会给JayrErdBeNe自己任何布局,而是使用它的默认NULL布局,然后考虑将小浮动控件放在一个透明的(非透明的)JPAND面板中,它使用所需的任何布局,并将透明的JPAND添加到JLAIERDEPAN的上层。 例如,此代码将指南针图像放置在非不透明JPanel的右上角,该JPanel分层在显示地形图的JLabel上:

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;

@SuppressWarnings("serial")
public class LayeredExample extends JLayeredPane {
   public static final String MAP_URL = "http://upload.wikimedia.org/" +
        "wikipedia/commons/c/c4/Maps-for-free_Sierra_Nevada.png";
   public static final String COMPASS_URL = "http://upload.wikimedia.org/" +
        "wikipedia/commons/thumb/f/f8/Compass_Rose_English_North.svg/" +
        "200px-Compass_Rose_English_North.svg.png";
   private Dimension imageSize;
   private JLabel defaultLabel = new JLabel();
   private JPanel palettePane = new JPanel();
   private JLabel compassLabel = new JLabel();

   public LayeredExample() {
      try {
         URL mapUrl = new URL(MAP_URL);
         BufferedImage mapImage = ImageIO.read(mapUrl);
         ImageIcon mapIcon = new ImageIcon(mapImage);
         defaultLabel.setIcon(mapIcon);

         URL compassUrl = new URL(COMPASS_URL);
         BufferedImage compassImage = ImageIO.read(compassUrl);
         ImageIcon compassIcon = new ImageIcon(compassImage);
         compassLabel.setIcon(compassIcon);

         imageSize = new Dimension(mapImage.getWidth(), mapImage.getHeight());
         setPreferredSize(imageSize);
         defaultLabel.setSize(imageSize);
         defaultLabel.setLocation(0, 0);
         palettePane.setSize(imageSize);
         palettePane.setLocation(0, 0);


         JPanel northPalettePane = new JPanel(new BorderLayout());
         northPalettePane.setOpaque(false);
         northPalettePane.add(compassLabel, BorderLayout.EAST);
         palettePane.setOpaque(false);
         palettePane.setLayout(new BorderLayout());
         palettePane.add(northPalettePane, BorderLayout.NORTH);

         add(defaultLabel, JLayeredPane.DEFAULT_LAYER);
         add(palettePane, JLayeredPane.PALETTE_LAYER);
      } catch (MalformedURLException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }

   private static void createAndShowUI() {
      JFrame frame = new JFrame("LayeredExample");
      frame.getContentPane().add(new LayeredExample());
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      java.awt.EventQueue.invokeLater(new Runnable() {
         public void run() {
            createAndShowUI();
         }
      });
   }
}

另一方面,考虑一下。这里有一些。

确切的结果是什么?你能发布一些(示例)代码来解决这个问题吗?也许还有一个截图?是的,请发布一个.1,它是半透明的,与默认的
AlphaComposite.SRC\u规则很好地融合在一起。哇,这真是太完美了。谢谢@戈登:不客气!祝您的项目和Java教育好运!