Java Swing(初学者):有6个文本框竖直排列和两个按钮(bt1和bt2),默认焦点在第一个文本框上。
以前写的,功能差不多,用1,2,3,4。。代替了。自己看一下吧
ctrl+1 表示选择编号为1的按钮。上下键控制位置变化
package eventDemo;
import java.awt.FlowLayout;
import java.awt.KeyEventPostProcessor;
import java.awt.KeyboardFocusManager;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class KeyEventDemo implements KeyListener{
JButton []b = new JButton[10];
int x,y;
JFrame jf;
KeyboardFocusManager manager;
public static void main(String []args){
new KeyEventDemo();
}
KeyEventDemo(){
manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();//看这里。。。。。。。。。。。。。。。改成setCurrentKeyboardFocusManager(),其他在改一下就可以了
manager.addKeyEventPostProcessor(new KeyEventPostProcessor() {
@Override
public boolean postProcessKeyEvent(KeyEvent e) {
// TODO Auto-generated method stub
if ((e.getModifiersEx() InputEvent.CTRL_DOWN_MASK) !=0){
if (e.getKeyCode()==KeyEvent.VK_1){
//System.out.println(“11”);
b[1].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_2){
System.out.println(“11”);
b[2].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_3){
System.out.println(“11”);
b[3].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_4){
System.out.println(“11”);
b[4].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_5){
System.out.println(“11”);
b[5].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_6){
System.out.println(“11”);
b[6].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_7){
System.out.println(“11”);
b[7].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_8){
System.out.println(“11”);
b[8].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_9){
System.out.println(“11”);
b[9].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_0){
System.out.println(“11”);
b[0].requestFocus();
}
}
return false;
}
});
jf = new JFrame(“KeyEventDemo”);
jf.setLayout(new FlowLayout());
for (int i = 0; i =9; i++) {
b[i] = new JButton(i+””);
jf.add(b[i]);
b[i].addKeyListener(this);
}
jf.setBounds(600,200,200,200);
jf.setVisible(true);
jf.validate();
jf.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_0)
System.out.println(‘0’);
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
});
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
JButton temp = (JButton) e.getSource();
x = temp.getBounds().x;
y = temp.getBounds().y;
//System.out.println(x*y);
if (e.getKeyCode() == KeyEvent.VK_UP)
y = y – 20;
if (e.getKeyCode() == KeyEvent.VK_DOWN)
y = y + 20;
if (e.getKeyCode() == KeyEvent.VK_RIGHT)
x = x + 20;
if (e.getKeyCode() == KeyEvent.VK_LEFT)
x = x – 20;
temp.setLocation(x, y);
}
}
以下java程序,如何实现按钮垂直排序,且按钮大小不变。其他的实现不变。
进行容器的嵌套就能解决:
import javax.swing.*;
import java.awt.*;
public class Dashboard{
private static final long serialVersionUID = 1L;
JMenu m,m1;
JMenuBar mb;
public Dashboard(){
JFrame jf = new JFrame(“Dashboard”);
jf.setSize(700,300);
jf.setLocationRelativeTo(null);//窗口居中
jf.setBackground(Color.white);
m = new JMenu(“File”);
m1 = new JMenu(“Help”);
mb = new JMenuBar();
mb.add(m);
mb.add(m1);
JPanel Panel1 = new JPanel();
Panel1.setLayout(new GridLayout(5,3));
JLabel l1=new JLabel(“”);
JLabel l2=new JLabel(“”);
JLabel l3=new JLabel(“”);
JLabel l4=new JLabel(“”);
JLabel l5=new JLabel(“”);
JLabel l6=new JLabel(“”);
JLabel l7=new JLabel(“”);
JLabel l8=new JLabel(“”);
JLabel l9=new JLabel(“”);
JLabel l10=new JLabel(“”);
JLabel l11=new JLabel(“”);
JLabel l12=new JLabel(“”);
JLabel l13=new JLabel(“”);
JPanel Panel_left = new JPanel();
Panel_left.setBackground(Color.white);
Panel_left.setBorder(BorderFactory.createMatteBorder(5,5,5,10,Color.lightGray));
JPanel Panel_right = new JPanel();
Panel_right.setBackground(Color.white);
Panel_right.setBorder(BorderFactory.createMatteBorder(5,5,5,5,Color.lightGray));
JButton b_movementforecast = new JButton(“Movement Forecast”);
b_movementforecast.setPreferredSize(new Dimension(150, 40));
JButton b_yarddensity = new JButton(“Yard Density”);
b_yarddensity.setLocation(6, 60);
b_yarddensity.setPreferredSize(new Dimension(150, 40));
Panel1.add(l1);
Panel1.add(l2);
Panel1.add(l3);
Panel1.add(l4);
Panel1.add(b_movementforecast);
Panel1.add(l5);
Panel1.add(l6);
Panel1.add(l7);
Panel1.add(l8);
Panel1.add(l9);
Panel1.add(b_yarddensity);
Panel1.add(l10);
Panel1.add(l11);
Panel1.add(l12);
Panel1.add(l13);
Panel_left.add(Panel1);
jf.setJMenuBar(mb);
jf.getContentPane().add(Panel_left,”West”) ;
jf.add(Panel_right);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
new Dashboard();
}
}
java如何把GUI界面的按钮竖直排列
Class GridLayout
位于java.awt包下
构造方法之一
GridLayout(int rows, int cols)
一个参数传列数,第二个传行数
竖直排一列列数传1进去就可以了吧