【发布时间】:2014-11-01 09:16:06
【问题描述】:
我正在尝试制作一个从用户那里获取输入的程序,当用户按下回车键时,我会在我的 FlowLayout 面板中排列按钮的属性。但显然我的代码不起作用。不过没有错误。
package hm2v;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
import javax.swing.border.*;
public class LayoutM extends JFrame {
static String[] alc = {"LEFT", "RIGHT"};
static JLabel align = new JLabel("Aligment ");
static JLabel hgap = new JLabel("HGap ");
static JLabel vgap = new JLabel("VGap ");
final static JComboBox aligncom = new JComboBox(alc);
final static JTextField hgaptext = new JTextField(10);
final static JTextField vgaptext = new JTextField(10);
final static FlowLayout exL = new FlowLayout(FlowLayout.LEFT, 3, 4);
public static void main(String[] args) {
new LayoutM();
LayoutM frame = new LayoutM();
frame.setTitle("Dynamic FlowLayout");
frame.setSize(400, 325);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public LayoutM() {
Container contain = getContentPane();
contain.setLayout(new BorderLayout());
final FlowLayout exL = new FlowLayout(FlowLayout.LEFT, 3, 4);
final JPanel panel1 = new JPanel();
panel1.setLayout(exL);
panel1.setBorder(new TitledBorder("A Container of FlowLayout"));
for (int i = 0; i < 15; i++) {
panel1.add(new JButton("Component " + i));
}
JPanel panel2 = new JPanel();
panel2.setLayout(new BorderLayout());
panel2.setBorder(new TitledBorder("FlowLayout Properties"));
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(3, 1, 0, 5));
JPanel p4 = new JPanel();
p4.setLayout(new GridLayout(3, 1, 0, 5));
p3.add(align);
p3.add(hgap);
p3.add(vgap);
p4.add(aligncom);
p4.add(hgaptext);
p4.add(vgaptext);
panel2.add(p3, BorderLayout.WEST);
panel2.add(p4);
contain.add(panel1);
contain.add(panel2, BorderLayout.SOUTH);
addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
System.out.println("Enter pressed");
aligncom.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
int x = aligncom.getSelectedIndex();
switch (x) {
case 0: {
exL.setAlignment(FlowLayout.LEFT);
}
case 1: {
exL.setAlignment(FlowLayout.RIGHT);
break;
}
}
}
});
hgaptext.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String y = hgaptext.getText();
int z = Integer.parseInt(y);
exL.setHgap(z);
}
});
vgaptext.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String v = vgaptext.getText();
int g = Integer.parseInt(v);
exL.setHgap(g);
}
});
}
}
@Override
public void keyTyped(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
}
}
当我输入输入并按下回车键时,没有任何变化,并且没有写“按下回车键”。我在哪里做错了?谢谢!
【问题讨论】:
标签: java swing user-interface keylistener