Java GUI自动resize
这是绘制GUI的地方(注意,该类扩展了JFrame)。
public Cache() { SubstanceColorChooserUI col = new SubstanceColorChooserUI(); while (mode == 0); setResizable(false); setTitle("Cache"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 483, 374); setLocationRelativeTo(null); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BorderLayout()); textField = new JTextField(); textField.setBounds(10, 11, 328, 20); contentPane.add(textField); textField.setColumns(10); JButton btnLoadCache = new JButton("Load cache"); btnLoadCache.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { String loc = textField.getText(); if (loc.equals("")) { JOptionPane.showMessageDialog(Cache.this, "Please specify a location for the cache.", "Unable to load", JOptionPane.ERROR_MESSAGE); return; } if (!loc.endsWith("\\")) loc = loc + "\\"; cache = new Store(loc); loadImages(); } catch (Exception e) { JOptionPane.showMessageDialog(Cache.this, "Cache failed to initialize.\n" + e.getMessage(), "Unable to load", JOptionPane.ERROR_MESSAGE); } } }); btnLoadCache.setBounds(351, 9, 112, 23); contentPane.add(btnLoadCache); JSplitPane splitPane = new JSplitPane(); splitPane.setDividerLocation(150); splitPane.setContinuousLayout(true); splitPane.setBounds(10, 44, 453, 279); contentPane.add(splitPane); JPanel panellie = new JPanel(); panellie.setLayout(new BorderLayout(0, 0)); panel = new ImagePanel(null); scrollPane_1 = new JScrollPane(); panellie.add(scrollPane_1, "Center"); scrollPane_1.setViewportView(panel); splitPane.setRightComponent(panellie); JPanel panel_1 = new JPanel(); splitPane.setLeftComponent(panel_1); panel_1.setLayout(new BorderLayout(0, 0)); JScrollPane scrollPane = new JScrollPane(); panel_1.add(scrollPane, BorderLayout.CENTER); model = new DefaultListModel(); list = new JList(model); list.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent arg0) { if (arg0.getValueIsAdjusting()) return; ListedImage img = list.getModel().getElementAt(list.getSelectedIndex()); panel.setImage(img.getImage()); } }); scrollPane.setViewportView(list); progressBar = new JProgressBar(); progressBar.setStringPainted(true); progressBar.setDoubleBuffered(true); progressBar.setBounds(10, 328, 453, 14); contentPane.add(progressBar); }
当我将setResizeable设置为true并且我开始拖动程序变得越来越小时,我将如何制作它,如何在整个Frameresize时使框架内部的组件(按钮,标签等)resize
使用布局管理器而不是为每个组件设置边界。
它会随着程序的不同而变化,您希望组件的移动方式如何。
看看这个 ,并尝试看看哪种布局最适合您。
1.您可以使用setSize()
方法设置JFrame大小 。
2.您可以通过设置isResizable(false)
来选择固定JFrame的大小 。
3.使用由NetBeans团队在2005年开发的GroupLayout,现在免费试用 Google提供的Windows Builder Pro 。 在这里,您可以选择GroupLayout,然后将组件拖放到JFrame中,即使您希望手动编辑GUI代码也是如此。
- 隐藏的字段虽然inheritance
- 我将如何修复以下代码的NullPointerException?
- IntelliJ GUI Designer Maven可执行JAR导出
- Java是否具有const引用等价物?
- Perl的包函数与Java相当
- 使用’.txt’文件中的值填充’JTable’
- Spring引导Hibernate错误java.lang.NoSuchMethodError:javax.persistence.JoinColumn.foreignKey()Ljavax / persistence / ForeignKey;
- 如何在Struts 2中实现分页
- 将模拟注入Spring MockMvc WebApplicationContext