java – 此结构的最佳布局/嵌套布局
发布时间:2020-12-15 04:20:51 所属栏目:Java 来源:网络整理
导读:我是Swing的新手,我正在尝试创建一个界面,如: ?———————————- | | |信息文本| | | ?——– —————- ——– | | JPwdField | | | —————- | |按钮|按钮7 |按钮| | 1 —————- 3 | | | JTextField | | ?——– ——- ——– ——– | |
我是Swing的新手,我正在尝试创建一个界面,如:
?———————————- 我们的想法是所有的按钮都在它们的“单元格”中展开,所以我已经阅读了嵌套的GridLayout,但是我在思考如何实现它时遇到了问题.有关如何嵌套布局或更好的方法的任何建议? 解决方法
就代码可读性的复杂性而言,GridBagLayout将充当最佳解决方案.由于这个结果最适合GridBagLayout,只要知道如何解决相同的约束:-)
import java.awt.*; import javax.swing.*; public class GridBagLayoutExample { private GridBagConstraints gbc; private JButton[] buttons; public GridBagLayoutExample() { buttons = new JButton[7]; gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; } private void displayGUI() { JFrame frame = new JFrame("GridBagLayout Example"); frame.setDefaultCloSEOperation(JFrame.DISPOSE_ON_CLOSE); JPanel contentPane = new JPanel(new GridBagLayout()); for (int i = 0; i < buttons.length; i++) { buttons[i] = new JButton(Integer.toString(i + 1)); } JLabel informationLabel = new JLabel("Information Text",JLabel.CENTER); addComp(contentPane,informationLabel,1.0,0.20,4,1); addComp(contentPane,buttons[0],1,0.25,0.60,3); JPasswordField passwordField = new JPasswordField(10); addComp(contentPane,passwordField,0.50,2,buttons[6],1); JTextField tField = new JTextField(10); addComp(contentPane,tField,3,buttons[2],3); addComp(contentPane,buttons[1],buttons[4],buttons[5],buttons[3],1); frame.setContentPane(contentPane); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } private void addComp(JPanel panel,JComponent comp,int x,int y,double wx,double wy,int gw,int gh) { gbc.gridx = x; gbc.gridy = y; gbc.weightx = wx; gbc.weighty = wy; gbc.gridwidth = gw; gbc.gridheight = gh; panel.add(comp,gbc); } public static void main(String[] args) { Runnable runnable = new Runnable() { @Override public void run() { new GridBagLayoutExample().displayGUI(); } }; EventQueue.invokeLater(runnable); } } OUTPUT: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |