Я пытаюсь создать верхние кнопки окна. У меня есть JFrame и JPanel с разными кнопками, когда я пытаюсь добавить панель с кнопками в JPanel на фрейме, он не показывает ... копая и пытаясь найти решение, я понимаю, что проблема когда я устанавливаю ориентацию на панель с помощью кнопок на панели BorderLayout. Я думаю, что это может быть что-то глупое, чего я не понимаю, но я не нашел такой проблемы.BorderLayout ориентация
Проблема здесь, когда я установил ориентацию:
contentPanel.add(buttons,BorderLayout.PAGE_START);
если я удалить:
BorderLayout.PAGE_START
работает
Это мой кадр:
package view;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.CardLayout;
import java.awt.BorderLayout;
public class MainFrame extends JFrame{
private JPanel contentPanel, layOutPanel;
private CardLayout mainCardLayout;
private BorderLayout borderLayout;
private static MainFrame instance = null;
private FrameButtonsPanel buttons;
private MainFrame(){
setSize(1000,700);
//setUndecorated(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPanel = new JPanel();
borderLayout = new BorderLayout();
contentPanel.setLayout(borderLayout);
add(contentPanel);
buttons = new FrameButtonsPanel();
buttons.setBackground(Color.red);
contentPanel.add(buttons,BorderLayout.PAGE_START);
/*layOutPanel = new JPanel();
mainCardLayout = new CardLayout();
layOutPanel.setLayout(mainCardLayout);
layOutPanel.setBackground(Color.red);
contentPanel.add(layOutPanel,BorderLayout.SOUTH);*/
}
public static MainFrame getInstance(){
if (instance == null){
instance = new MainFrame();
}
return instance;
}
public static void main(String[] args) {
MainFrame.getInstance().setVisible(true);
}
}
и это моя панель wi й кнопки:
package view;
import javax.swing.JPanel;
import javax.swing.SpringLayout;
import javax.swing.Spring;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class FrameButtonsPanel extends JPanel{
private Spring spring;
private JButton iconify, maximize, close;
public FrameButtonsPanel(){
SpringLayout mySpring = new SpringLayout();
setLayout(mySpring);
iconify = new JButton("-");
add(iconify);
maximize = new JButton("O");
add(maximize);
close = new JButton("X");
add(close);
spring = Spring.constant(850,850,2000);
mySpring.putConstraint(SpringLayout.WEST,iconify,spring,SpringLayout.WEST,this);
mySpring.putConstraint(SpringLayout.WEST,maximize,3,SpringLayout.EAST,iconify);
mySpring.putConstraint(SpringLayout.WEST,close,3,SpringLayout.EAST,maximize);
mySpring.putConstraint(SpringLayout.EAST,this,3,SpringLayout.EAST,close);
iconifyWindow();
maximizeWindow();
closeWindow();
}
private void iconifyWindow(){
iconify.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
MainFrame.getInstance().setExtendedState(JFrame.ICONIFIED);
}
});
}
private void maximizeWindow(){
maximize.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
if(MainFrame.getInstance().getExtendedState() == JFrame.MAXIMIZED_BOTH){
MainFrame.getInstance().setExtendedState(JFrame.NORMAL);
}else{
MainFrame.getInstance().setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}
});
}
private void closeWindow(){
close.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
}
}
Устранена проблема, любая идея, почему я не могу это сделать с весенним макетом? Я хотел добавить еще несколько компонентов в панель, которую я создаю, и я подумал, что весна даст мне больше настроек, так или иначе, я думаю, что смогу работать с FlowLayout – DarkCrow10
@ DarkCrow10, я уверен, что вы можете это сделать с SpringLayout. Но SpringLayout - сложный менеджер компоновки со многими ограничениями. Ваш код не работает, потому что ваши ограничения неверны. Так зачем использовать его, когда FlowLayout настолько прост. Если вы хотите поэкспериментировать с SpringLayout, начните с рабочих примеров из учебника Swing в [Как использовать SpringLayout] (http://docs.oracle.com/javase/tutorial/uiswing/layout/spring.html). – camickr