我有10来个按扭要放在jfame上
如
button1 button2 button3
button4 button5 空 button6
button7 button8 空 button9 空 button10
这样的格局摆放
不知道jframe的布局怎么设置,
请指教,不甚感激!
如
button1 button2 button3
button4 button5 空 button6
button7 button8 空 button9 空 button10
这样的格局摆放
不知道jframe的布局怎么设置,
请指教,不甚感激!
import java.awt.*;
import java.awt.event.*;public class Calculator2 extends WindowAdapter implements ActionListener {
private int result = 0, data1 = 0, radixPointDepth = 1; private boolean radixPointIndicate = false;
private boolean resultIndicate = false; //是否显示 private char prec = '+'; private Frame f; private TextField tf; private Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14,
b15, b16; Panel p; static public void main(String args[]) { new Calculator2().go();
} public void go() { f = new Frame("计算器_刘阳"); p = new Panel();
p.setLayout(new GridLayout(4, 4));
tf = new TextField(30);
b1 = new Button("7");
b2 = new Button("8");
b3 = new Button("9");
b4 = new Button("+");
b5 = new Button("4");
b6 = new Button("5");
b7 = new Button("6");
b8 = new Button("-");
b9 = new Button("1");
b10 = new Button("2");
b11 = new Button("3");
b12 = new Button("*");
b13 = new Button("0");
b14 = new Button(".");
b15 = new Button("=");
b16 = new Button("/"); f.add(tf, "North");
f.add(p, "Center");
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
p.add(b9);
p.add(b10);
p.add(b11);
p.add(b12);
p.add(b13);
p.add(b14);
p.add(b15);
p.add(b16); b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this); f.addWindowListener(this);
f.setSize(200, 200);
f.setVisible(true);
//f.pack();
} public void actionPerformed(ActionEvent e) { String s;
s = e.getActionCommand(); switch (s.charAt(0)) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (resultIndicate) {
result = 0;
data1 = 0;
prec = '+'; }
Integer Int1 = new Integer(s);
if (radixPointIndicate) {
radixPointDepth = radixPointDepth / 10;
data1 = data1 + (Int1.intValue()) * radixPointDepth;
} else {
data1 = data1 * 10 + (Int1.intValue());
}
Double displayNumber = new Double(data1);
tf.setText(displayNumber.toString());
resultIndicate = false;
break; case '+':
case '-':
case '*':
case '/':
case '=':
if (s.charAt(0) != '=' && resultIndicate) {
prec = s.charAt(0);
resultIndicate = false;
} else {
switch (prec) {
case '+':
result = result + data1;
break;
case '-':
result = result - data1;
break;
case '*':
result = result * data1;
break;
case '/':
result = result / data1;
break; }
}
radixPointIndicate = false;
radixPointDepth = 1;
displayNumber = new Double(result);
tf.setText(displayNumber.toString()); if (s.charAt(0) != '=') {
data1 = 0;
prec = s.charAt(0);
} else {
resultIndicate = true;
}
break; case '_':
radixPointIndicate = true;
break; } } public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
*********************************************************
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame{ private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;// 计算结果显示区 private String lastCommand;// 保存+,-,*,/,=命令 private double result;// 保存计算结果 private boolean start;// 判断是否为数字的开始 public Calculator() { super("java_刘阳"); container = getContentPane(); layout = new GridBagLayout(); container.setLayout(layout); constraints = new GridBagConstraints(); start = true; result = 0; lastCommand = "="; displayField = new JTextField(20); displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx =0; constraints.gridy =0; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.fill = GridBagConstraints.BOTH; constraints.weightx = 100; constraints.weighty = 100; layout.setConstraints(displayField, constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); addButton("Backspace", 0, 1, 2, 1, insert); addButton("CE", 2, 1, 1, 1, insert); addButton("C", 3, 1, 1, 1, insert); addButton("7", 0, 2, 1, 1, insert); addButton("8", 1, 2, 1, 1, insert); addButton("9", 2, 2, 1, 1, insert); addButton("/", 3, 2, 1, 1, command); addButton("4", 0, 3, 1, 1, insert); addButton("5", 1, 3, 1, 1, insert); addButton("6", 2, 3, 1, 1, insert); addButton("*", 3, 3, 1, 1, command); addButton("1", 0, 4, 1, 1, insert); addButton("2", 1, 4, 1, 1, insert); addButton("3", 2, 4, 1, 1, insert); addButton("-", 3, 4, 1, 1, command); addButton("0", 0, 5, 1, 1, insert); addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值 addButton(".", 2, 5, 1, 1, insert); addButton("+", 3, 5, 1, 1, command); addButton("=", 0, 6, 4, 1, command); setSize(300, 300); setVisible(true); } private void addButton(String label, int row, int column, int with,
int height, ActionListener listener) { JButton button = new JButton(label); constraints.gridx = row; constraints.gridy = column; constraints.gridwidth = with; constraints.gridheight = height; constraints.fill = GridBagConstraints.BOTH; button.addActionListener(listener); layout.setConstraints(button, constraints); container.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input = event.getActionCommand(); if (start) { displayField.setText(""); start = false; if (input.equals("+/-")) displayField.setText(displayField.getText() + "-"); } if (!input.equals("+/-")) { if (input.equals("Backspace")) { String str = displayField.getText(); if (str.length() > 0) displayField
.setText(str.substring(0, str.length() - 1)); } else if (input.equals("CE") || input.equals("C")) { displayField.setText("0"); start = true; } else displayField.setText(displayField.getText() + input); } } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); if (start) { lastCommand = command; } else { calculate(Double.parseDouble(displayField.getText())); lastCommand = command; start = true; } } } public void calculate(double x) { if (lastCommand.equals("+"))
result += x; else if (lastCommand.equals("-"))
result -= x; else if (lastCommand.equals("*"))
result *= x; else if (lastCommand.equals("/"))
result /= x; else if (lastCommand.equals("="))
result = x; displayField.setText("" + result); } public static void main(String[] args) { Calculator calculator = new Calculator(); calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
JButton jb=new JButton("button1");
遇到空的时候可以写jp6.add(new JLabel());
不为空的就可以用jp6.add(jb);这里是3行两列,所以add6次就可以了,如果像楼主那样的话,需要3行六列。
import java.awt.event.*;
import javax.swing.*;
public class BoxLayoutDemo{
public BoxLayoutDemo(){
JFrame f=new JFrame();
Container contentPane=f.getContentPane();
Box baseBox=Box.createHorizontalBox();//先产生水平排列方式的Box组件,当作基底容器(BaseBox)
contentPane.add(baseBox);
/*产生垂直排列方式的Box组件来安置第一与第三个按钮
*/
Box vBox=Box.createVerticalBox();
JButton b=new JButton("first");
vBox.add(b);
b=new JButton("third");
b.setMaximumSize(new Dimension(100,150));
vBox.add(b);
baseBox.add(vBox);
/*产生垂直排列方式的Box组件来安置第二与另一个水平排列方式的Box组件
*/
Box vBox1=Box.createVerticalBox();
baseBox.add(vBox1);
b=new JButton("second");
b.setAlignmentX(Component.CENTER_ALIGNMENT);
b.setMaximumSize(new Dimension(300,50));
vBox1.add(b);
Box hBox=Box.createHorizontalBox();
vBox1.add(hBox);
/*将第四与最后一个按钮加入水平排列方式的Box组件中
*/
Box vBox2=Box.createVerticalBox();
vBox2.add(Box.createVerticalStrut(50));
vBox2.add(new JButton("fourth"));
vBox2.add(Box.createVerticalStrut(50));
hBox.add(vBox2);
Box vBox3=Box.createVerticalBox();
vBox3.add(Box.createVerticalGlue());
vBox3.add(new JButton("THis is the last button"));
hBox.add(vBox3);
f.setTitle("BoxLayout");
f.pack();
f.setVisible(true);
f.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
public static void main(String[] args){
BoxLayoutDemo b=new BoxLayoutDemo();
}
}
http://java.sun.com/products/jfc/tsc/articles/tablelayout/
然后把第一行定为:1行3列
第二行定为:1行3列
。
第二行:中间列再分~~
麻烦的可以慢慢实现~~~
我也刚刚学JAVA
不知道Jframe 是不是比较高层面的内容啊!
我用的JCreator LE不知道怎么用Jframe啊?
有高人指点下吗?或者有什么材料能够比较详细描述学习Jframe的啊?
本人邮箱[email protected]
有的可以发给我学习,不甚感激!