gpt4 book ai didi

java - 我应该如何以及在何处将 ActionListener 添加到我的代码中?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:30:20 25 4
gpt4 key购买 nike

我写了下面的代码,它有一个文本字段和一个按钮。一旦输入一个字符并按下按钮,就会创建一个选项卡,其标题与在字段中输入的内容相同。

可以用相同的方式创建多个选项卡.....现在再次在新选项卡中,一个文本字段和一个按钮存在很长,并带有一个文本 Pane 来显示结果....

我想在每个选项卡的文本 Pane 中显示输入到文本字段的文本...

现在请引导我学习如何以及在何处放置选项卡按钮的监听器....并推荐任何其他所需的监听器(我认为应该有另一个监听器将我引导到重点或选定的选项卡)。

应该提到的是,我已将这些选项卡添加到数组列表中以供重复使用,但我不知道我是否做对了或者我该如何使用它?

package test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;

public class TestGUI extends JFrame {


private JTextField jTextField1;
private JButton jButton1;
static ArrayList<JPanel> ary = new ArrayList<JPanel>();
private int tabIndex = 0;
static int index = 0;
private JTabbedPane tabbedPane;

/**
* @param args
*/
public TestGUI() {

super("Testing Tab Frame");
setLayout(null);

Handler but1 = new Handler();

jTextField1 = new JTextField();
jTextField1.setVisible(true);
jTextField1.setBounds(12, 12, 85, 30);
add(jTextField1);

jButton1 = new JButton("Button1");
jButton1.setVisible(true);
jButton1.setBounds(130, 12, 85, 30);
add(jButton1);
jButton1.addActionListener(but1);

tabbedPane = new JTabbedPane();
tabbedPane.setBounds(12, 54, 200, 150);
tabbedPane.setVisible(false);
add(tabbedPane);
pack();
setSize(250, 110);
setLocationRelativeTo(null);

}

private class Handler implements ActionListener {

public void actionPerformed(ActionEvent evt) {
String input = jTextField1.getText();
if (!input.isEmpty()) {
setSize(250, 250);
JPanel inst = createPanel(input);
inst.setVisible(true);
tabbedPane.addTab(Integer.toString(tabIndex), inst);
tabbedPane.setVisible(true);
}

}
}

protected JPanel createPanel(String input) {
JPanel inst = new JPanel();
inst.setVisible(true);
JTextField textField = new JTextField();
textField.setVisible(true);
textField.setBounds(12, 12, 80, 30);
JButton button = new JButton();
button.setVisible(true);
button.setBounds(100, 12, 80, 30);
JTextPane textPane = new JTextPane();
textPane.setBounds(12, 54, 168, 40);
inst.add(textPane);
textPane.setVisible(true);
inst.setLayout(null);
inst.add(button);
inst.add(textField);
ary.add(inst);
tabIndex = index;
index++;
return inst;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
TestGUI inst = new TestGUI();
inst.setVisible(true);
}

}

最佳答案

您可以将 ActionListener 添加到 createPanel 方法中的按钮。所以你的方法应该是这样的(对你实际想用文本做什么做一些假设,因为它不清楚):

protected JPanel createPanel(String input) {
JPanel inst = new JPanel();
inst.setVisible(true);
final JTextField textField = new JTextField();
textField.setVisible(true);
textField.setBounds(12, 12, 80, 30);
JButton button = new JButton();
button.setVisible(true);
button.setBounds(100, 12, 80, 30);
final JTextPane textPane = new JTextPane();
textPane.setBounds(12, 54, 168, 40);
inst.add(textPane);
textPane.setVisible(true);

button.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent arg0) {
textPane.setText(textPane.getText() + textField.getText());
}});

inst.setLayout(null);
inst.add(button);
inst.add(textField);
ary.add(inst);
tabIndex = index;
index++;
return inst;
}

关于java - 我应该如何以及在何处将 ActionListener 添加到我的代码中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11874709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com