2014-02-02 3 views
0

Мой запрос может быть таким простым, но это заставило меня застрять. Я разрабатываю программное обеспечение с использованием netbeans7.4 и java на windows 8 pc, у меня есть MainForm, который появляется во весь экран и отображает только MenuBar (сверху) и метку (для фонового изображения). Я использовал следующий код, чтобы сделать его Strach как размер экрана пользователяЯ хочу добавить строку состояния, которая должна отображаться в нижней части экрана монитора, изменяющейся с размером монитора

this.setExtendedState(Main_Form.MAXIMIZED_BOTH); 

Теперь я хочу, чтобы добавить строку состояния, которая должна появиться в нижней части окна и должны определить расположение дна экран каждый раз, когда он работает на мониторе разного размера.

+3

Используйте BorderLayout, добавить компонент в положение ЮЖНОГО, это будет изменено по горизонтали автоматически. Держите свою метку в позиции CENTER – MadProgrammer

+0

, можете ли вы предоставить код? @MadProgrammer –

ответ

0

Вы можете сделать ширину вашего элемента равной ширине монитора клиентов с помощью команды: yourelement.Width = ClientRectangle.Width;

+0

Это не работает или может быть, я делаю что-то неправильно. –

1

Используйте BorderLayout, добавьте компонент в положение SOUTH, это будет изменяться по горизонтали автоматически. Держите метку в CENTER положения

Заканчивать How to use BorderLayout для более подробной информации

Status

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.EventQueue; 
import java.awt.FlowLayout; 
import java.awt.event.ComponentAdapter; 
import java.awt.event.ComponentEvent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 
import javax.swing.border.CompoundBorder; 
import javax.swing.border.EmptyBorder; 
import javax.swing.border.LineBorder; 

public class StatusBarExample { 

    public static void main(String[] args) { 
     new StatusBarExample(); 
    } 

    public StatusBarExample() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException ex) { 
       } catch (InstantiationException ex) { 
       } catch (IllegalAccessException ex) { 
       } catch (UnsupportedLookAndFeelException ex) { 
       } 

       JPanel statusBar = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
       statusBar.setBorder(
           new CompoundBorder(
               new LineBorder(Color.DARK_GRAY), 
               new EmptyBorder(4, 4, 4, 4))); 
       final JLabel status = new JLabel(); 
       statusBar.add(status); 

       JLabel content = new JLabel("Content in the middle"); 
       content.setHorizontalAlignment(JLabel.CENTER); 

       final JFrame frame = new JFrame("Test"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(content); 
       frame.add(statusBar, BorderLayout.SOUTH); 

       frame.addComponentListener(new ComponentAdapter() { 

        @Override 
        public void componentResized(ComponentEvent e) { 
         status.setText(frame.getWidth() + "x" + frame.getHeight()); 
        } 

       }); 

       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

}