У меня проблемы с моей работой. Я хочу, чтобы я хотел, чтобы мой образ был определенным или постоянным. Но каждый раз, когда я изменяю размер окна, изображение также меняет свое место. И когда я использую.setResizable(false), я не вижу текст и изображение.
import java.awt.*;
import javax.swing.*;
public class ProgDraft extends JFrame {
private ImageIcon image1;
private JLabel label1;
ProgDraft() {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
ImageIcon pics = new ImageIcon(getClass().getResource("l.png"));
JLabel logo = new JLabel(pics);
panel.setBounds(100,100,100,100);
panel.add(logo);
JLabel title = new JLabel("Testing Title");
panel.add(title);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(panel);
getContentPane().add(logo, BorderLayout.CENTER);
getContentPane().add(title, BorderLayout.NORTH);
}
}
здесь главная
import javax.swing.*;
import java.awt.*;
public class ProgDraftMain {
public static void main(String args[]) {
ProgDraft gui = new ProgDraft();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setResizable(false);
gui.setVisible(true);
//gui.pack();
gui.setSize(500 , 300);
}
}
Спасибо!
Вы уже добавили логотип на панель, но вы снова попытаетесь добавить логотип в область содержимого (то же самое с заголовком). Первое добавление к панели отрицается, что плохо, потому что вам нужно FlowLayout, чтобы сохранить позицию. У каждого компонента может быть только один родитель. Не добавляйте логотип в область содержимого. Просто добавьте панель и сделайте раскладку панели new FlowLayout(FlowLayut.LEADING)
. Это положит ярлык слева от панели. Затем вы можете добавить пустую рамку для метки, чтобы добавить интервал к метке
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ProgDraftMain {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
ProgDraft gui = new ProgDraft();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setResizable(false);
gui.setSize(500 , 300);
gui.setVisible(true);
}
});
}
}
class ProgDraft extends JFrame {
private ImageIcon image1;
private JLabel label1;
ProgDraft() {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEADING));
ImageIcon pics = new ImageIcon(getClass().getResource("stackoverflow.png"));
JLabel logo = new JLabel(pics);
logo.setBorder(BorderFactory.createEmptyBorder(10, 10, 0, 0));
panel.add(logo);
panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
JLabel title = new JLabel("Testing Title", JLabel.CENTER);
Font font = new Font("impact", Font.PLAIN, 30);
title.setFont(font);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(panel, BorderLayout.CENTER);
getContentPane().add(title, BorderLayout.PAGE_START);
}
}
Научитесь использовать разные менеджеры макетов. Не пытайтесь зависеть от идеального положения пикселя. См. Раздел " Укладка компонентов в контейнере"
Также посмотрите, как использовать границы