borderlayout java swing alignment jpanel jlabel

borderlayout - jlabel java



Java: alineaciĆ³n vertical dentro de JPanel (3)

Estoy tratando de alinear verticalmente (centro) ambos JLabels dentro de un JPanel.

JPanel panel = new JPanel(); panel.setPreferredSize(size); JLabel label1 = new JLabel(icon); JLabel label2 = new JLabel("text"); panel.add(label1); panel.add(label2);

He intentado usar setAligmentY () sin éxito. Ambas etiquetas siempre aparecen en la parte superior de JPanel.

UPD: Las etiquetas deben estar ubicadas una junto a la otra, como usar FlowLayout, pero en el medio de JPanel.


Puede ver esta respuesta: https://.com/a/18073909/189411

JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));


Usa gridlayout, simple. Eso debería funcionar.

Considera mi siguiente ejemplo:

import java.awt.*; import java.applet.Applet; import javax.swing.*; /* <applet code=AJ07 width=450 height=450> </applet> */ public class AJ07 extends JApplet{ Container c=null; public void init(){ JPanel pTop=new JPanel(); JPanel pLeft=new JPanel(); JPanel pCenter=new JPanel(); JPanel pProperties=new JPanel(); pLeft.setLayout(new GridLayout(20,1)); c=this.getContentPane(); JButton bNew=new JButton("New"); pTop.add(bNew); JButton bOpen=new JButton("Open"); pTop.add(bOpen); JButton bSave=new JButton("Save"); pTop.add(bSave); JButton bSaveAll=new JButton("Save All"); pTop.add(bSaveAll); JButton bRun=new JButton("Run"); pTop.add(bRun); JButton bStop=new JButton("Stop"); pTop.add(bStop); JButton bPause=new JButton("Pause"); pTop.add(bPause); JButton bText=new JButton("TextBox"); pLeft.add(bText); JButton bButton=new JButton("Button"); pLeft.add(bButton); pProperties.setLayout(new GridLayout(20,1)); pProperties.add(new Label("BackColor")); pProperties.add(new Label("ForeColor")); c.add(new TextArea(),BorderLayout.CENTER); c.add(pTop,BorderLayout.NORTH); c.add(pLeft,BorderLayout.WEST); c.add(new Label("Project Loaded Successfully!"),BorderLayout.SOUTH); c.add(pProperties,BorderLayout.EAST); //c.add(pCenter,BorderLayout.CENTER); } }

para la cual la salida es la siguiente:


Utilice un GridBagLayout con las restricciones predeterminadas. Aquí hay un pequeño código de demostración:

import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class TestVerticalAlignement { protected void initUI() { final JFrame frame = new JFrame(); frame.setTitle("Test vertical alignement"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); JLabel label1 = new JLabel("label1"); JLabel label2 = new JLabel("label2"); panel.add(label1, gbc); panel.add(label2, gbc); frame.add(panel); frame.setSize(300, 300); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new TestVerticalAlignement().initUI(); } }); } }