2015-09-01 2 views
0

Эта программа должна открыть окно, добавить изображение, а затем добавить текст «hello world» над изображением. Текст появляется, когда я делаю frame.add (метка), а затем пытаюсь добавить изображение (например, показывает код), но даже когда я делаю противоположное и сначала добавляю изображение, я получаю только серый экран. Может ли кто-нибудь показать мне, как я могу получить изображение и текст?Изображение и текст в том же окне

public window(){ 
    JFrame frame = new JFrame("name"); 
    JLabel label = new JLabel ("hello world", JLabel.CENTER); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setResizable(false); 
    frame.setSize(600, 400); 
    frame.setVisible(true); 
    label.setAlignmentX(0); 
    label.setAlignmentY(0); 
    frame.add(label); 
    frame.add(new JLabel(new ImageIcon("file")));; 
    } 
} 
+0

1) 'new ImageIcon (" file ")' Это изображение предоставлено вами или пользователем? Какое точное имя файла? 2) 'frame.setVisible (true);' Это должно быть сделано последним. 3) Добавление двух компонентов (в этом случае) приведет к тому, что будет видно только одно. –

ответ

1

Вы должны использовать overlay макет, но он применим на JPanel.

Так добавить JPanel к вашему frame затем применить layout, наконец, добавить components.

Ваш код может быть таким:

public window(){ 
    JFrame frame = new JFrame("name"); 
    JLabel label = new JLabel ("hello world", JLabel.CENTER); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JPanel panel = new JPanel() { 
     public boolean isOptimizedDrawingEnabled() { 
     return false; 
     } 
    }; 
    LayoutManager overlay = new OverlayLayout(panel); 
    panel.setLayout(overlay); 
    frame.setResizable(false); 
    frame.setSize(600, 400); 
    frame.setVisible(true); 
    label.setAlignmentX(0); 
    label.setAlignmentY(0); 
    panel.add(label); 
    panel.add(new JLabel(new ImageIcon("file"))); 
    frame.add(panel, BorderLayout.CENTER); 
    } 
} 
1

Метка может иметь текст и значок, и относительное положение может быть изменено.

расположение
JLabel label = new JLabel ("hello world", new ImageIcon("file"), JLabel.CENTER); 
label.setVerticalTextPosition(SwingConstants.TOP); 
frame.add(label); 
//frame.add(new JLabel(new ImageIcon("file")));; 

по умолчанию BorderLayout и add(label, BorderLayout.CENTER).