我對 Java 編程有點陌生,但在這里我試圖弄清楚如何添加在 ActionEvent 中單擊的按鈕的值。我什至將 actionlistener 更改為 MouseListener 等,但仍然無法正常作業。它只顯示單擊的當前按鈕,但我想將單擊的每個按鈕添加到陣列串列中。
問題:我無法將單擊的按鈕的值添加到陣列串列中。
示例:如果我點擊名為 E 的按鈕,那么我希望將 E 添加到陣列串列中,之后如果我點擊按鈕 S 那么它應該添加 S o 相同的陣列串列。但它沒有向陣列串列添加任何內容。它只顯示當前單擊的按鈕
public class WordFinder extends JFrame implements ActionListener {
private JButton buttons[];
ArrayList<String> LettersClicked = new ArrayList<String>();
private JTextArea jta;
private JLabel jLabel;
public WordFinder(){
int numberOfLetters = 64;
buttons = new JButton[numberOfLetters];
JFrame frame = new JFrame("wordfinder");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.red);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
JPanel topPanel = new JPanel();
topPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN));
topPanel.setPreferredSize(new Dimension(600, 600));
topPanel.setMaximumSize(new Dimension(600, 600));
topPanel.setBackground(Color.red);
JPanel bottomPanel = new JPanel();
bottomPanel.setBorder(BorderFactory.createLineBorder(Color.yellow));
bottomPanel.setPreferredSize(new Dimension(600, 300));
bottomPanel.setMaximumSize(new Dimension(600, 300));
bottomPanel.setBackground(Color.green);
Font f3 = new Font(Font.DIALOG, Font.BOLD, 35);
for (int i = 0;i<numberOfLetters;i ) {
char letter = alphabet();
buttons[i] = new JButton(String.valueOf(letter));
buttons[i].setFont(f3);
// buttons[i].setMinimumSize(new Dimension(40, 20));
buttons[i].setPreferredSize(new Dimension(65, 65));
buttons[i].setMargin(new Insets(0,0,0,0));
buttons[i].setBackground(Color.white);
buttons[i].setFocusPainted(false);
buttons[i].addActionListener(this);
topPanel.add(buttons[i]);
}
String buttValue = "";
jLabel = new JLabel("" buttValue);
jLabel.setFont(f3);
bottomPanel.add(jLabel);
LettersClicked.add(jLabel.toString());
for (int z = 0; z<LettersClicked.size(); z ){
JLabel aa = new JLabel("" LettersClicked.size());
bottomPanel.add(aa);
}
mainPanel.add(topPanel);
mainPanel.add(bottomPanel);
frame.getContentPane().add(mainPanel);
frame.setSize(1000,1000);
frame.setMinimumSize(new Dimension(1000, 1000));
frame.setVisible(true);
}
public char alphabet(){
Random rnd = new Random();
String alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char letter = alphabets.charAt(rnd.nextInt(alphabets.length()));
return letter;
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
JButton button = (JButton) actionEvent.getSource();
jLabel.setText(button.getText());
LettersClicked.add(button.getText());
}
}
uj5u.com熱心網友回復:
我認為您JLabel對 GUI 上顯示的內容和您的ArrayList. 問題其實在前者。
您當前的實作替換了 的文本,JLabel而不是為每個按下的按鈕附加它。
所以,在你的actionPerformed()方法中,改變這一行
jLabel.setText(button.getText());
到
jLabel.setText(jLabel.getText() button.getText());
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363039.html
下一篇:使用ImageIcon添加影像時發生“執行緒“AWT-EventQueue-0”java.lang.NullPointerException中的例外
