假設我想創建一個簡單的計算器。它由3個字段組成。顯示結果的文本字段,帶複選框的字段選擇系統和帶數字的字段。搖擺的BoxModel是如何工作的?
我應該爲每個元素使用哪種組件? 如何在我的窗口中放置元素? 如何定位組件內的元素(即複選框)?
這就是我想要實現的。
http://img28.imageshack.us/img28/7691/lab8c.jpg
假設我想創建一個簡單的計算器。它由3個字段組成。顯示結果的文本字段,帶複選框的字段選擇系統和帶數字的字段。搖擺的BoxModel是如何工作的?
我應該爲每個元素使用哪種組件? 如何在我的窗口中放置元素? 如何定位組件內的元素(即複選框)?
這就是我想要實現的。
http://img28.imageshack.us/img28/7691/lab8c.jpg
我會使用
JTextField
對數窗口JRadioButton
爲單選按鈕和JButton
。組件的佈局應推遲到所謂的佈局管理器。 (看一看Using Layout Managers在這種情況下,GridLayout
和/或GridBagLayout
將做精
此代碼應該讓你開始:。
import java.awt.*;
import javax.swing.*;
public class FrameTest {
public static void main(String[] args) {
final JFrame f = new JFrame("Frame Test");
JPanel panel = new JPanel(new GridBagLayout());
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1.0;
panel.add(new JTextField(), gbc);
JPanel numSysPanel = new JPanel(new GridLayout(1, 3));
numSysPanel.setBorder(BorderFactory.createTitledBorder("Number System"));
numSysPanel.add(new JRadioButton("oct"));
numSysPanel.add(new JRadioButton("dec"));
numSysPanel.add(new JRadioButton("hex"));
panel.add(numSysPanel, gbc);
JPanel buttons = new JPanel(new GridLayout(4, 4, 2, 2));
for (int i = 0; i < 16; i++)
buttons.add(new JButton("" + i));
panel.add(buttons, gbc);
f.setContentPane(panel);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
首先,你開始確定你應該使用哪個LayoutManager
來安排你的三個字段GridBagLayout
肯定會做你想要的,但是很難編程,你可以嘗試用簡單的BorderLayout
逃脫,這會讓你的應用看起來很奇怪,而resizin G。您也可以使用GroupLayout
。 BoxLayout
,GridLayout
和FlowLayout
不是您想要使用的。現在你有很多選擇,來展示你最重要的元素。
結果使用JTextField
。使用JCheckBox
作爲複選框,您將內部JPanel
帶有蝕刻邊框(通過JPanel.setBorder(BorderFactory.createEtchedBorder())
)和FlowLayout
。不要忘記把複選框放在CheckboxGroup
。最後但並非最不重要的是,使用JPanel
將JButton
分組,按鈕。使用GridLayout
(5行,4列)排列這些按鈕。