Я пытаюсь создать панель boxlayout с двумя другими панелями внутри него, одна из которых только в два раза меньше другой (так что соотношение 1/3 до 2/3). Настройка предпочтительного размера, кажется, не работает, и я не мог понять, какой-либо другой путь (следующий код в основном генерируются с Windowbuilder, так извинения, если это немного беспорядка):Java Swing Boxlayout: с панелями разных размеров (отношение друг к другу)
public class GUIControls extends JFrame implements IGUIControls {
private JTextField textField;
private int posX=0,posY=0;
public GUIControls() {
getContentPane().setBackground(Color.WHITE);
getContentPane().setLayout(new CardLayout(0, 0));
JPanel rootPanel = new JPanel();
rootPanel.setBorder(new LineBorder(new Color(0, 0, 255), 1, true));
rootPanel.setBackground(Color.WHITE);
getContentPane().add(rootPanel, "name_045969");
rootPanel.setLayout(new BoxLayout(rootPanel, BoxLayout.X_AXIS));
rootPanel.setPreferredSize(new Dimension(600, 400));
JPanel menuLeft = new JPanel();
rootPanel.add(menuLeft);
menuLeft.setBackground(Color.WHITE);
menuLeft.setLayout(null);
menuLeft.setPreferredSize(new Dimension((1/3)*rootPanel.getWidth(), rootPanel.getHeight()));
JPanel contentRight = new JPanel();
rootPanel.add(contentRight);
contentRight.setBackground(Color.WHITE);
contentRight.setPreferredSize(new Dimension((2/3)*rootPanel.getWidth(), rootPanel.getHeight()));
contentRight.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent arg0) {
CardLayout cardLayout = (CardLayout) getContentPane().getLayout();
cardLayout.show(getContentPane(), "name_36737116256884");
}
});
contentRight.setLayout(null);
setUndecorated(true);
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
posX=e.getX();
posY=e.getY();
}
});
addMouseMotionListener(new MouseAdapter()
{
public void mouseDragged(MouseEvent evt)
{
//sets frame position when mouse dragged
setLocation (evt.getXOnScreen()-posX,evt.getYOnScreen()-posY);
}
});
}
public void runGUI(){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
GUIControls guiControls = new GUIControls();
guiControls.pack();
guiControls.setLocationRelativeTo(null);
guiControls.setSize(600, 400);
guiControls.setVisible(true);
}
});
}
}
ли кто-нибудь знает, как я буду заниматься этим?
Спасибо.
'Настройка предпочтительного размера, похоже, не работает' - звучит как разумное решение для меня. Опубликуйте свой «SSCCE», который демонстрирует проблему при использовании этого подхода. – camickr
Я добавил в то, что я попытался сделать, но пока не повезло. – djcmm476
Это НЕ 'SSCCE', поэтому я не могу помочь. – camickr