java – 我应该在代码中添加ActionListener的方式和位置?
发布时间:2020-12-15 05:09:11 所属栏目:Java 来源:网络整理
导读:我写了下面的代码,里面有一个文本字段和一个按钮.输入字符并按下按钮后,将创建一个标签,其标题与在字段中输入的标题相同. 几个选项卡可以以相同的方式创建…..现在再次在新选项卡中,文本字段和按钮存在一个长文本窗格以显示结果…. 我想在每个标签的文本窗格
我写了下面的代码,里面有一个文本字段和一个按钮.输入字符并按下按钮后,将创建一个标签,其标题与在字段中输入的标题相同.
几个选项卡可以以相同的方式创建…..现在再次在新选项卡中,文本字段和按钮存在一个长文本窗格以显示结果…. 我想在每个标签的文本窗格中显示输入到文本字段的文本… 现在请带领我学习如何以及在哪里将监听器放在选项卡的按钮上……并推荐任何其他必需的监听器(我认为应该有另一个监听器来指导我关注或选择的选项卡). 应该提到的是,我已将这些选项卡添加到数组列表中以供任何重用,但我不知道我是否正确或如何使用它? 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,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,80,30); JButton button = new JButton(); button.setVisible(true); button.setBounds(100,30); JTextPane textPane = new JTextPane(); textPane.setBounds(12,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,30); JButton button = new JButton(); button.setVisible(true); button.setBounds(100,30); final JTextPane textPane = new JTextPane(); textPane.setBounds(12,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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |