私は既にこの解決策を探していましたが、うまくいかなかった。たぶん私の設定が違うからかもしれません。私は、エレベータシミュレータをしようとしていると私は、この図があります: diagram を、私はこのコードを持っている:java、swing - JScrollPaneにJlayeredPaneを追加すると、空白の背景のみが表示されます
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
@SuppressWarnings("serial")
public class Test extends JFrame {
public Test() {
Container contentPane = getContentPane();
GridBagConstraints constraints = new GridBagConstraints();
JButton floor = new JButton();
JLabel cab = new JLabel();
JPanel floorPanel = new JPanel();
JPanel cabPanel = new JPanel();
JLayeredPane layeredPane = new JLayeredPane();
JScrollPane scroll = new JScrollPane();
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
contentPane.setBackground(Color.BLUE);
contentPane.setLayout(new GridBagLayout());
constraints.insets = new Insets(20, 92, 20, 92);
floorPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
floorPanel.setPreferredSize(new Dimension(165, 165));
floor.setPreferredSize(new Dimension(165, 165));
floor.setBackground(Color.WHITE);
floor.setText("1");
cab.setPreferredSize(new Dimension(165, 165));
cab.setText("Cab");
cab.setBackground(Color.BLACK);
cab.setLocation(0, 0);
cabPanel.setLayout(null);
cabPanel.setPreferredSize(new Dimension(165, 165));
cabPanel.setOpaque(false);
cabPanel.add(cab);
layeredPane.setLayout(new BorderLayout());
layeredPane.setPreferredSize(new Dimension(165, 165));
layeredPane.add(floorPanel, 0);
layeredPane.add(cabPanel, 1);
scroll.setMinimumSize(new Dimension(183, 660));
scroll.setMaximumSize(new Dimension(183, 660));
scroll.setViewportView(layeredPane);
contentPane.add(scroll, constraints);
pack();
setVisible(true);
}
}
それはのJLayeredPaneに追加した2つのJPanelを表示し、唯一の空白の背景を表示する文句を言いません。 JLayeredPaneの2番目のレイヤーのJPanelでsetOpaque(false)を試しましたが、それでも動作しませんでした。
すでに解決策が見つかっている場合は、リンクを送信してください。 Ps。間違った文法にごめんなさい
を[、あなたの質問に私たちの問題を示し、完全なシンプルな小さなプログラム例、コンパイルし、私たちのために走るものを作成して投稿してくださいmcve]。 –
質問:JPanelにJLayeredPaneを埋め込むのはなぜですか?これはどんな目的にも役立たないようです。 –
よろしくお願いいたします。私はそれについて知らなかったので、ここに新しい私はそれを編集するつもりです。 JPanelにはレイアウトがあり、JLayaredPaneにはデフォルトがありません。追加すると、レイヤ化された機能が削除されます。しかし、まだ動作しませんでした。 –