用java编写一个图形化界面应用程序

旺仔小子 2011-09-09 08:22:51
本人java入门级菜鸟,想求教各位大神如何用java编写一个图形化界面应用程序,用来计算三角形面积,由用户输入三遍长,若按空格则三边数值清空,按回车确定光标跳至下一条边输入框,三边输完即可出现三角形面积及缩略图,求赐教。。。
...全文
694 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小绵羊 2011-09-13
  • 打赏
  • 举报
回复
已知三边的情况下用海伦公式计算


int a = 3, b = 4, c = 5;//三邊長
int p = (a + b + c) / 2;//半周長
Math.sqrt(p * (p - a) * (p - b) * (p - c));//面積
桃园闲人 2011-09-10
  • 打赏
  • 举报
回复
楼上的很有耐心,支持!!!
topzergling 2011-09-10
  • 打赏
  • 举报
回复

import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class MainFrame extends JFrame {
private JTextField length1;
private JTextField length2;
private JTextField length3;
private JTextField array[];

public MainFrame() {
init();
}

private void init() {
length1 = createTextField("1");
length2 = createTextField("2");
length3 = createTextField("3");
array = new JTextField[3];
array[0] = length1;
array[1] = length2;
array[2] = length3;
this.setLayout(new GridLayout(3, 2));
this.add(new JLabel("边长A", SwingConstants.CENTER));
this.add(length1);
this.add(new JLabel("边长B", SwingConstants.CENTER));
this.add(length2);
this.add(new JLabel("边长C", SwingConstants.CENTER));
this.add(length3);
this.setSize(200, 150);
this.setTitle("计算三角形面积");
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}

private JTextField createTextField(String name) {
final JTextField t = new JTextField(6);
t.setName(name);
t.addKeyListener(new KeyListener() {

@Override
public void keyTyped(KeyEvent arg0) {
}

@Override
public void keyReleased(KeyEvent arg0) {
}

@Override
public void keyPressed(KeyEvent arg0) {
if (arg0.getKeyCode() == KeyEvent.VK_SPACE) {
clear();
length1.grabFocus();
} else if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {
if (check()) {
JOptionPane
.showMessageDialog(MainFrame.this, getArea());
} else {
JOptionPane.showMessageDialog(MainFrame.this,
"请完整填写数据或者三条边无法构成三角形!");
}
}
}

});
return t;
}

private Object getArea() {
return 123;
}

private void clear() {
length1.setText("");
length2.setText("");
length3.setText("");
}

private boolean check() {
for (JTextField t : array) {
if (!t.getText().matches("^[0-9]+$")) {
return false;
}
}
int x = Integer.parseInt(length1.getText());
int y = Integer.parseInt(length2.getText());
int z = Integer.parseInt(length3.getText());
if (x + y < z || x + z < y || y + z < x)
return false;
return true;
}

public static void main(String[] args) {
new MainFrame();
}
}

空格是清空 回车是校验并提交 换行的功能还是tab
计算面积的函数是getArea()自己往里写吧
由于对正则表达式不熟,现在只能输入正整数

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧