Чтобы добавить фоновое изображение, я работаю над JLabels вместо JPanel.Фиксация JScrollPane с помощью JLabel
JFrame frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label=new JLabel(new ImageIcon("bg.png"));
label.setLayout(new BoxLayout(label, BoxLayout.Y_AXIS));
for(int i=0;i<20;i++)
label.add(new JLabel(i.toString()));
frame.add(label);
проблема здесь заключается в том, что только те компоненты, которые подходят фоновое изображение будет показано (в моем примере только 10 первых JLabels)
Я попытался с помощью JScrollPane
JScrollPane scroll=new JScrollPane(l);
for(int i=0;i<20;i++)
label.add(new JLabel(i.toString()));
frame.add(scroll);
, но это не сильно изменился, поэтому я попытался использовать JPanel
JPanel panel=new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JScrollPane scroll=new JScrollPane(panel);
for(int i=0;i<20;i++)
panel.add(new JLabel(i.toString()));
label.add(scroll);
frame.add(label);
поэтому я получил JScrollPa ne работает нормально, но JPanel закрыл фоновое изображение
Что делать?
Вот результат добавления компоненты JLabel на этикетке:
Результат после добавления их в свиток:
И после добавления setOpaque(false)
к JPanel
:
установить непрозрачность JPanel на false. Но для лучшей помощи, скорее всего, опубликуйте [mcve] и ASCII-арт/образ того, что у вас есть и чего вы хотите достичь, это значительно улучшит ваше сообщение. Поскольку у вас пока нет достаточной репутации, вы можете добавить ссылку на свое изображение, и мы можем отредактировать сообщение и сделать это здесь. – Frakcool
Кроме того, в качестве рекомендации в стороне сделайте свои переменные более наглядными, 'l', что есть' l '?Я должен был пойти в коде, чтобы узнать, что это такое, вместо этого назовите их 'label' или' pane'/'panel' для панелей,' s' измените его на 'scroll' /' scrollPane'/etc; это сделает код более легким для чтения и понимания для вас и для нас – Frakcool
Нет, это не сработало –