我正在創建一個用戶系統來保存多個用戶的多個詳細資訊,因此我想創建一個可以創建另一個按鈕的按鈕。當按下第二個按鈕時,將打開一個表單供用戶填寫。我已經創建了供用戶填寫的表單,但我無法設法讓按鈕創建更多的按鈕來作業。我已經對此進行了編碼,但它沒有在JPanel.
我創建了以下代碼:
private void mainButtonActionPerformed(java.awt.event.ActionEvent evt) {
JButton b=new JButton("Click Here");
b.setBounds(50,100,95,30);
jPanel3.add(b);
b.setVisible(true);
}
我想知道在按鈕的事件/滑鼠單擊中撰寫的正確代碼是什么。
uj5u.com熱心網友回復:
當您從 中添加或洗掉組件時JPanel,您需要JPanel重新繪制它本身。僅添加或洗掉組件不會發生這種情況。因此,在從 中添加或洗掉組件后JPanel,您需要先呼叫方法,revalidate然后再呼叫repaint。
請參閱Java Swing revalidate() 與 repaint()
另請注意,由于visible默認情況下該屬性為 true,因此不需要以下代碼行。
b.setVisible(true);
此外,建議使用布局管理器,這意味著您不需要setBounds像在這行代碼中那樣呼叫方法。
b.setBounds(50,100,95,30);
編輯
根據要求,示例應用程式。單擊該Add按鈕將添加另一個按鈕。注意,ActionListener的用于Add按鈕作為實作方法的參考。
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ButtonAd {
private static final String ADD = "Add";
private JFrame frame;
private JPanel buttonsPanel;
private void addButton(ActionEvent event) {
JButton button = new JButton("Added");
buttonsPanel.add(button);
buttonsPanel.revalidate();
buttonsPanel.repaint();
}
private JPanel createAddButton() {
JPanel addButtonPanel = new JPanel();
JButton addButton = new JButton(ADD);
addButton.addActionListener(this::addButton);
addButtonPanel.add(addButton);
return addButtonPanel;
}
private void createAndDisplayGui() {
frame = new JFrame("Add Buttons");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createButtonsPanel(), BorderLayout.CENTER);
frame.add(createAddButton(), BorderLayout.PAGE_END);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JPanel createButtonsPanel() {
buttonsPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
buttonsPanel.setPreferredSize(new Dimension(450, 350));
return buttonsPanel;
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> new ButtonAd().createAndDisplayGui());
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/403475.html
標籤:
