Java选择布局
发布时间:2020-12-15 08:40:37 所属栏目:Java 来源:网络整理
导读:我需要在 Java中使用以下布局: 但是,我应该发现没有布局管理器可以简单地为我处理这个问题.我需要在JFrame中使用此布局. 有没有中途简单的方法我能做到这一点? 提前致谢! 编辑:谢谢你们所有人,我终于成功了! 这就是我所做的(正如你所提议的那样) 窗口的
我需要在
Java中使用以下布局:
但是,我应该发现没有布局管理器可以简单地为我处理这个问题.我需要在JFrame中使用此布局. 有没有中途简单的方法我能做到这一点? 提前致谢! 编辑:谢谢你们所有人,我终于成功了! 这就是我所做的(正如你所提议的那样) >窗口的BorderLayout 谢谢大家,我的建议我混合了^^ 解决方法
我知道你通过放置在BorderLayout布局管理器中的混合JPanel解决了你的问题.如果有效,那没关系.
对于那些对使用GridBagLayout作为解决方案感到好奇的人,我将此类作为示例.只需复制粘贴,编译和运行即可.拖动这个小应用程序窗口的角落,看看调整窗口大小的效果. // Example code showing the flexibility of GridBagLayout. // Source code generated by WindowBuilder 1.0.0r37 in Eclipse (Indigo Release) on Mac OS X 10.6.7. // ? 2011 Basil Bourque. http://www.GridsGoneWild.com/ // This source code may be used freely forever by anyone taking full responsibility for doing so. // Each layout manager bundled in Java is quite different from the others. They all have strengths and weaknesses,// each designed for different purposes and effects. // GridBagLayout is the most powerful and flexible,but takes some patient practice to understand. // Funny animated video commentary by a GridBagLayout programmer: http://madbean.com/anim/totallygridbag/ // Hand-coding GridBagLayout is certainly tedious,and nearly impossible for complex forms. So I recommend the use of // a visual GUI builder such as WindowBuilder in Eclipse,JFormDesigner from FormDev.com,or Matisse in NetBeans. // Key ideas,"grow" & "fill": // ? In WindowBuilder's Design View,select a widget,then use the "Horizontal grow" and "Vertical grow" icons found in the upper right tool bar. // ? Use the widget's (label's,button's) "Constraints" > "fill" property in the property sheet of WindowBuilder. // Further ideas: // ? To contain multiple widgets in each area,use JPanel objects where I have used single JLabel and JButton objects. // Nesting JPanels inside JPanels (or in the JFrame's contentPane) is considered normal in Swing. Each JPanel has its own layout manager. // ? If need be,you can set the Minimum,Maximum,and/or Preferred size of a widget or JPanel. // ? If you want certain widgets or JPanels to get disproportionately more or less of the space gained or lost when a window is resized,// use "weightx" and "weighty" properties. // WindowBuilder Tips: // ? If it's your first time: Open the .java file,then click the "Design" button at bottom to see visual editor. // ? Click the "Show Advanced properties" icon at top of a widget's property sheet to see many hidden properties. // package com.your.package.goes.here; // Uncomment this line,and modify to suit your own package. import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.GridBagLayout; import javax.swing.JLabel; import java.awt.GridBagConstraints; import java.awt.Color; import java.awt.Insets; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class GridBagLayout_Example extends JFrame { private JPanel contentPane; private JLabel lblVariableXVariableY; private JButton btnVariableXFixedY; private JLabel lblFixedXVariableY; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { GridBagLayout_Example frame = new GridBagLayout_Example(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Constructor */ public GridBagLayout_Example() { setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,450,300); this.contentPane = new JPanel(); this.contentPane.setBorder(new EmptyBorder(5,5,5)); setContentPane(this.contentPane); GridBagLayout gbl_contentPane = new GridBagLayout(); gbl_contentPane.columnWidths = new int[]{0,0}; gbl_contentPane.rowHeights = new int[]{0,0}; gbl_contentPane.columnWeights = new double[]{0.0,1.0,Double.MIN_VALUE}; gbl_contentPane.rowWeights = new double[]{1.0,0.0,Double.MIN_VALUE}; this.contentPane.setLayout(gbl_contentPane); this.lblFixedXVariableY = new JLabel("Fixed x,Variable y"); this.lblFixedXVariableY.setOpaque(true); this.lblFixedXVariableY.setBackground(new Color(233,150,122)); GridBagConstraints gbc_lblFixedXVariableY = new GridBagConstraints(); gbc_lblFixedXVariableY.fill = GridBagConstraints.VERTICAL; gbc_lblFixedXVariableY.gridheight = 2; gbc_lblFixedXVariableY.insets = new Insets(0,5); gbc_lblFixedXVariableY.gridx = 0; gbc_lblFixedXVariableY.gridy = 0; this.contentPane.add(this.lblFixedXVariableY,gbc_lblFixedXVariableY); this.lblVariableXVariableY = new JLabel("Variable x & y"); this.lblVariableXVariableY.setBackground(new Color(147,112,219)); this.lblVariableXVariableY.setOpaque(true); GridBagConstraints gbc_lblVariableXVariableY = new GridBagConstraints(); gbc_lblVariableXVariableY.fill = GridBagConstraints.BOTH; gbc_lblVariableXVariableY.insets = new Insets(0,0); gbc_lblVariableXVariableY.gridx = 1; gbc_lblVariableXVariableY.gridy = 0; this.contentPane.add(this.lblVariableXVariableY,gbc_lblVariableXVariableY); this.btnVariableXFixedY = new JButton("Variable x,Fixed y"); this.btnVariableXFixedY.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { } }); this.btnVariableXFixedY.setOpaque(true); GridBagConstraints gbc_btnVariableXFixedY = new GridBagConstraints(); gbc_btnVariableXFixedY.fill = GridBagConstraints.HORIZONTAL; gbc_btnVariableXFixedY.gridx = 1; gbc_btnVariableXFixedY.gridy = 1; this.contentPane.add(this.btnVariableXFixedY,gbc_btnVariableXFixedY); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |