Как я могу создать панель в нижней части приложения Java, как строка состояния?

Я нахожусь в процессе создания приложения Java и хотел бы иметь панель в нижней части приложения, в котором я отображаю текстовую панель и состояние (прогресс) панель.

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

52
задан ROMANIA_engineer 22 July 2017 в 15:53
поделиться

4 ответа

Создайте JFrame или JPanel с BorderLayout укажите что-то вроде BevelBorder или границы линии, чтобы отделить ее от остального содержимого, а затем добавьте панель состояния в BorderLayout.SOUTH.

JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.setSize(200, 200);

// create the status bar panel and shove it down the bottom of the frame
JPanel statusPanel = new JPanel();
statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
frame.add(statusPanel, BorderLayout.SOUTH);
statusPanel.setPreferredSize(new Dimension(frame.getWidth(), 16));
statusPanel.setLayout(new BoxLayout(statusPanel, BoxLayout.X_AXIS));
JLabel statusLabel = new JLabel("status");
statusLabel.setHorizontalAlignment(SwingConstants.LEFT);
statusPanel.add(statusLabel);

frame.setVisible(true);

Вот результат использования приведенного выше штрих-кода состояния на моем компьютере:

enter image description here

102
ответ дан 7 November 2019 в 09:15
поделиться

Я бы порекомендовал компонент строки состояния в библиотеке SwingX - Документация по API для строки состояния находится здесь

Хороший пример ее использования - здесь.

Удачи.

2
ответ дан 7 November 2019 в 09:15
поделиться

К сожалению, Swing не имеет встроенной поддержки StatusBars. Вы можете использовать BorderLayout и метку или все, что вам нужно отобразить внизу:

public class StatusBar extends JLabel {

    /** Creates a new instance of StatusBar */
    public StatusBar() {
        super();
        super.setPreferredSize(new Dimension(100, 16));
        setMessage("Ready");
    }

    public void setMessage(String message) {
        setText(" "+message);        
    }        
}

Затем на главной панели:

statusBar = new StatusBar();
getContentPane().add(statusBar, java.awt.BorderLayout.SOUTH);

От: http: //www.java-tips .org / java-se-tips / javax.swing / create-a-status-bar.html

6
ответ дан 7 November 2019 в 09:15
поделиться

Я использовал библиотеку Swing из L2FProd . Библиотека строки состояния, которую они предоставили, очень хороша.

Ниже описано, как вы могли бы его использовать:

  1. Загрузите JAR, который они предоставляют, и поместите его в свой путь к классам
  2. Строка состояния внутренне делит область панели на зоны. Каждая зона может содержать компонент (JLabel, JButton и т. Д.). Идея состоит в том, чтобы заполнить планку необходимыми зонами и компонентами.

  3. Создайте экземпляр строки состояния, как показано ниже ....

     import java.awt.Component;
    import javax.swing.BorderFactory;
    import javax.swing.JLabel;
    import com.l2fprod.common.swing.StatusBar;
    StatusBar statusBar = новый StatusBar ();
    statusBar.setZoneBorder (BorderFactory.createLineBorder (Color.GRAY));
    statusBar.setZones (
    новая строка [] {"первая_зона", "вторая_зона", "оставшиеся_зоны"},
    новый компонент [] {
    новый JLabel ("первый"),
    новый JLabel ("второй"),
    новый JLabel ("оставшийся")
     },
    новая строка [] {"25%", "25%", "*"}
    );
    
  4. Теперь добавьте указанную выше statusBar на главную панель, которая у вас есть (BorderLayout и установите ее на южную сторону).

См. Пример снимка экрана из одного из приложений, над которым я работаю здесь (у него 2 зоны). Сообщите мне, если у вас возникнут проблемы ....

4
ответ дан 7 November 2019 в 09:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: