嗨我的JButtons和JTextfields的功能有问题。 我想添加多个按钮和文本字段到一个JComponent(=面板),但我不能看到 在激活它们时得到任何结果。打印方法不执行。 我已经通过内部类将每个按钮链接到它的(打印)方法。每个文本字段和按钮的添加以及将这些元素中的每一个定义为动作侦听器在不同的方法中发生了 ,即activateButton & activateTextfield。如何将动作添加到多个JButtons内部具有ActionListener类的JTextfields?
任何人都可以看到什么是错的?任何帮助或建议非常感谢!
顺便说一句,错误可能不是基于语法,编译的一切,只是有一些问题把代码放在论坛上。
Import bla bla (everything is imported :)
public class Gui { every JButton, every JTextfield is defined as a field, panels and frame to
/**
*/
public Gui()
{
makeFrame();
}
protected JComponent makeTextPanel(String text1, String text2) {
String nieuwelijn = System.getProperty("line.separator");
/**JPanel*/ panel = new JPanel(false);
JLabel filler = new JLabel("<html> + owyeah" + text1 + "<br>text2<br>text1<br>text2<br>text1</html>");
filler.setHorizontalAlignment(JLabel.LEFT);
filler.setVerticalAlignment(JLabel.TOP);
panel.setLayout(new GridLayout(1, 1));
panel.add(filler);
return panel;}
// define each created textfield as actionlistener and add it to the given panel
private void tekstveldActiveren(JTextField t , JComponent p)
{
t.addActionListener(new Afhandelaar2());
p.add(t);
}
// define each created textfield as actionlistener and add it to the given panel
private void knopActiveren(JButton k , JComponent p)
{
k.addActionListener(new Afhandelaar1());
p.add(k);
}
private void makeFrame()
{
frame = new JFrame("Interface");
frame.setSize(600, 300);
JPanel contentPane = (JPanel)frame.getContentPane();
contentPane.setBorder(new EmptyBorder(12, 12, 12, 12));
makeMenuBar(frame);
contentPane.setLayout(new BorderLayout(6, 6));
JPanel centerPane = new JPanel();
{
centerPane.setLayout(new BorderLayout(8, 8));
JTabbedPane tabbedPane = new JTabbedPane();
JComponent panel1 = makeTextPanel("5","kamer 1");
tabbedPane.addTab("kamer 1",panel1);
JButton tabknop1 = new JButton("knop1");
JButton tabknop2 = new JButton("knop1");
JButton tabknop3 = new JButton("knop1");
knopActiveren(tabknop1, panel1);
knopActiveren(tabknop2, panel1);
knopActiveren(tabknop3, panel1);
JTextField tekstveld1 = new JTextField("0",5);
JTextField tekstveld2 = new JTextField("0",5);
JTextField tekstveld3 = new JTextField("0",5);
tekstveldActiveren(tekstveld1 , panel1);
tekstveldActiveren(tekstveld2 , panel1);
tekstveldActiveren(tekstveld3 , panel1);
JComponent panel2 = makeTextPanel("kamer 1","kamer 1");
tabbedPane.addTab("kamer 2",panel2);
JButton tabknop4 = new JButton("knop1");
JButton tabknop5 = new JButton("knop1");
JButton tabknop6 = new JButton("knop1");
knopActiveren(tabknop4, panel2);
knopActiveren(tabknop5, panel2);
knopActiveren(tabknop6, panel2);
JTextField tekstveld4 = new JTextField("0",5);
JTextField tekstveld5 = new JTextField("0",5);
JTextField tekstveld6 = new JTextField("0",5);
tekstveldActiveren(tekstveld4 , panel2);
tekstveldActiveren(tekstveld5 , panel2);
tekstveldActiveren(tekstveld6 , panel2);
JComponent panel3 = makeTextPanel("kamer 1","kamer 1");
tabbedPane.addTab("kamer 3",panel3);
JButton tabknop7 = new JButton("knop1");
JButton tabknop8 = new JButton("knop1");
JButton tabknop9 = new JButton("knop1");
knopActiveren(tabknop7, panel3);
knopActiveren(tabknop8, panel3);
knopActiveren(tabknop9, panel3);
JTextField tekstveld7 = new JTextField("0",5);
JTextField tekstveld8 = new JTextField("0",5);
JTextField tekstveld9 = new JTextField("0",5);
tekstveldActiveren(tekstveld7 , panel3);
tekstveldActiveren(tekstveld8 , panel3);
tekstveldActiveren(tekstveld9 , panel3);
centerPane.add(tabbedPane);
}
contentPane.add(centerPane, BorderLayout.CENTER);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);
frame.setVisible(true);
}
}
private class Afhandelaar1 implements ActionListener {
public void actionPerformed(ActionEvent g){
if(g.getSource()== tabknop1){System.out.println("tabknop 1");}
else if(g.getSource()== tabknop2){System.out.println("tabknop 2");}
else if(g.getSource()== tabknop3){System.out.println("tabknop 3");}
else if(g.getSource()== tabknop4){System.out.println("tabknop 4");}
else if(g.getSource()== tabknop5){System.out.println("tabknop 5");}
else if(g.getSource()== tabknop6){System.out.println("tabknop 6");}
else if(g.getSource()== tabknop7){System.out.println("tabknop 7");}
else if(g.getSource()== tabknop8){System.out.println("tabknop 8");}
else if(g.getSource()== tabknop9){System.out.println("tabknop 9");}
}
}
private class Afhandelaar2 implements ActionListener {
public void actionPerformed(ActionEvent h)
{
if(h.getSource()== tekstveld1) {System.out.println(conversieMethode(tekstveld1));}
else if(h.getSource()== tekstveld2){System.out.println(conversieMethode(tekstveld2));}
else if(h.getSource()== tekstveld3){System.out.println(conversieMethode(tekstveld3));}
else if(h.getSource()== tekstveld4){System.out.println(conversieMethode(tekstveld4));}
else if(h.getSource()== tekstveld5){System.out.println(conversieMethode(tekstveld5));}
else if(h.getSource()== tekstveld6){System.out.println(conversieMethode(tekstveld6));}
else if(h.getSource()== tekstveld7){System.out.println(conversieMethode(tekstveld7));}
else if(h.getSource()== tekstveld8){System.out.println(conversieMethode(tekstveld8));}
else if(h.getSource()== tekstveld9){System.out.println(conversieMethode(tekstveld9));}
}
}
}
为了更快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。另外,使用英文属性和方法名称的源代码会很有帮助。 – 2012-03-28 01:46:16