Java GUI 自动调整大小 [英] Java GUI Automatically Resizing
问题描述
这里是绘制 GUI 的地方(注意,该类扩展了 JFrame).
Here is where the GUI is drawn(note, the class extends 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<ListedImage>();
list = new JList<ListedImage>(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 并开始拖动程序变得越来越小时,我将如何做到这一点,我该如何做到这一点,以便框架内的组件(按钮、标签等)在整个过程中调整大小框架正在调整大小
How would I make it so when I setResizeable to true and I start dragging the program to be bigger and smaller, how do I make it so that the components inside of the frame(buttons, labels, etc) resize when the whole Frame is resizes
推荐答案
使用布局管理器而不是为每个组件设置边界.
Use a layout manager instead of setting the bounds for each component.
您希望组件如何移动会因程序而异.
It is going to vary from program to program how you want your components to move.
看看this,然后试着看看哪种布局最适合您.
Take a look at this, and try to see which layout will work best for you.
这篇关于Java GUI 自动调整大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!