У меня есть Java-приложение для УВД.Я только начал работать с GUI.Сначала у меня есть мэйнфрейм, JLayeredPane
на этом мэйнфрейме и панели с метками (ImageIcons
) внутри них на JLayeredPane
.
Я успешно добавил около 4 панелей (панели имеют метки, а метки ImageIcons
) к JLayeredPane
.Когда я добавляю пятую панель, она отображает неправильный графический интерфейс.
Это то, что я получаю до добавления pnlplane (4 слоя):
Вот что я получаю (когда пытаюсь добавить плоскость - 5 слоев [проблема]):
Вот что я должен был получить:
import java.awt.Color;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class GUI extends JFrame {
JFrame main = new JFrame();
JLayeredPane jp = new JLayeredPane();
//Add JPanels here
JPanel pnlbackground = new JPanel();
JPanel pnlrunwayone = new JPanel();
JPanel pnlrunwaytwo = new JPanel();
JPanel pnlholding = new JPanel();
JPanel pnlplane = new JPanel();
//Add ImageIcons here
ImageIcon imgbackground = new ImageIcon("background.gif");
ImageIcon imgrunwayone = new ImageIcon("runway01.gif");
ImageIcon imgrunwaytwo = new ImageIcon("runway01.gif");
ImageIcon imgholding = new ImageIcon("holding01.gif");
ImageIcon imgplane = new ImageIcon("plane.gif");
//Add JLabels here
JLabel lblbackground = new JLabel(imgbackground);
JLabel lblrunwayone = new JLabel(imgrunwayone);
JLabel lblrunwaytwo = new JLabel(imgrunwaytwo);
JLabel lblholding = new JLabel(imgholding);
JLabel lblplane = new JLabel(imgplane);
public GUI() {
//Background
pnlbackground.setOpaque(false);
pnlbackground.setBounds(0, -5, 1024, 768);
pnlbackground.add(lblbackground);
//Runway one
pnlrunwayone.setOpaque(false);
pnlrunwayone.setBounds(170, 404, 685, 39);
pnlrunwayone.add(lblrunwayone);
//Runway two
pnlrunwaytwo.setOpaque(false);
pnlrunwaytwo.setBounds(170, 443, 685, 39);
pnlrunwaytwo.add(lblrunwaytwo);
// Holding pattern
pnlholding.setOpaque(false);
pnlholding.setBounds(0, 00, 330, 143);
pnlholding.add(lblholding);
//plane
pnlholding.setOpaque(false);
pnlholding.setBounds(0, 0, 48, 60);
pnlholding.add(lblplane);
//Adding them to each other
add(jp);
jp.add(pnlbackground, new Integer(0));
jp.add(pnlrunwayone, new Integer(1));
jp.add(pnlrunwaytwo, new Integer(2));
jp.add(pnlholding, new Integer(3));
jp.add(pnlplane, new Integer(4));
//MainFrame properties
setSize(1024, 768);
setBackground(Color.BLACK);
setTitle("Air Traffic Control");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new GUI();
}
}
Самый простой выход - это пойти исобрать все изображения в одно большое изображение в фотошопе.Тем не менее, я хотел бы знать, есть ли другие доступные исправления.