Постоянное местоположение изображения?

1

У меня проблемы с моей работой. Я хочу, чтобы я хотел, чтобы мой образ был определенным или постоянным. Но каждый раз, когда я изменяю размер окна, изображение также меняет свое место. И когда я использую.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);
    }
    } 

Спасибо!

  • 0
    это создаст проблемы, потому что это то же самое: getContentPane (). add (panel); getContentPane (). add (logo, BorderLayout.CENTER); оба компонента добавляются с помощью BorderLayout.CENTER (по умолчанию используется CENTER)
Теги:
user-interface
swing
jpanel
jlabel

1 ответ

2
Лучший ответ

Вы уже добавили логотип на панель, но вы снова попытаетесь добавить логотип в область содержимого (то же самое с заголовком). Первое добавление к панели отрицается, что плохо, потому что вам нужно 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);
    }
}

Научитесь использовать разные менеджеры макетов. Не пытайтесь зависеть от идеального положения пикселя. См. Раздел " Укладка компонентов в контейнере"

Изображение 174551

Также посмотрите, как использовать границы

  • 0
    прохладно! это большая помощь! спасибо, и я обязательно прочитаю ссылки, которыми вы поделились. еще раз спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню