這是我的代碼。當我setContentPane(panel)
它工作,但是當我getContentPane().add(panel)
它不起作用。setContentPane()工作但getContentPane()。add()不起作用
爲什麼第二種方法不起作用? (它不顯示我什麼)
public MyFrame() {
final JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
JMenuBar mnuBar = new JMenuBar();
JMenu mnu1 = new JMenu("aaa");
mnu1.setMnemonic(KeyEvent.VK_E);
JMenuItem menuItem = new JMenuItem("Insert Places", KeyEvent.VK_T);
menuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
count = 0;
jt = new ArrayList[4];
for (int i = 0; i < 4; i++)
jt[i] = new ArrayList<JTextField>();
panel = new JPanel();
panel.setLocation(0, 0);
panel.setSize(d.width, d.height);
panel.setLayout(null);
JButton add = new JButton("lllll");
add.setSize(120, 80);
add.setLocation(250, 100);
add.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
for (int i = 0; i < 4; i++) {
JTextField jt1 = new JTextField(20);
jt1.setSize(150, 30);
jt1.setLocation(450 + i * 200, 80 + count * 50);
jt1.setVisible(true);
jt[i].add(jt1);
panel.add(jt1);
}
count++;
frame.repaint();
}
});
panel.add(add);
JButton confirm = new JButton("ccc");
confirm.setSize(120, 80);
confirm.setLocation(250, 200);
confirm.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
count = 0;
for (int j = 0; j < jt[0].size(); j++) {
try {
connect.insertPlace(Integer.parseInt(jt[0]
.get(j).getText()), jt[1].get(j).getText(),
Integer.parseInt(jt[2].get(j).getText()),
Integer.parseInt(jt[3].get(j).getText()));
count++;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e, "ERROR",
0, null);
}
}
JLabel countL = new JLabel("" + count
+ " ??? ??? ?? ");
countL.setSize(100, 100);
countL.setLocation(250, 350 + jt.length * 10);
panel.add(countL);
frame.repaint();
}
});
panel.add(confirm);
frame.getContentPane().add(panel);
}
});
mnu1.add(menuItem);
mnuBar.add(mnu1);
frame.setJMenuBar(mnuBar);
frame.pack();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
我想把我的按鈕任意放在我的面板中。我應該使用什麼佈局? – Paniz
*「我想把我的按鈕任意放在我的面板中」*使用'ArbitraryLayout'。好吧,只是在開玩笑。但是**每個**佈局都有某種形式的邏輯,並且該邏輯應該用1)J2SE佈局管理器中的一個來表示。 2)自定義佈局管理器,或3)佈局管理器的組合。 - 所以哈!我的'ArbitraryLayout'現在聽起來不那麼傻,是嗎? –
的確,您應該決定如何佈置按鈕和麪板,然後使用不同佈局管理器的組合來實現這一點。 – Kayaman