首先,绘制一个默认的窗体,创建好工程,包,类,命名类为Window.很简单,在类中添加一个私有属性JFrame,这么写:private JFrame f = new JFrame("欢迎来到本自助银行")Window的构造方法中,只写 f.setVisible(true)以及窗体的初始位置和初始大小:f.setLocation(300, 200)f.setSize(800, 500)
然后在同一个构造函数中跟进一行f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)此为设置关闭图标即退出程序紧接着,写f.setResizable(false)此为设置不可更改窗体大小。如图,的确没办法更改了。
最后,便是画龙点睛的一笔,给窗体添加一个图标,显得更专业了一些:f.setIconImage(Toolkit.getDefaultToolkit().createImage("E:\\a.jpg"))
这里有一点比较重要,重申一句。构造器中的设置比静态属性初始化设置更有直接影响力。而且,程序是执行向上覆盖的。也就是说,如果之后有过更改,那么更改之后就显示更改后的结果,比如,在这个构造函数中再写f.setTitle("好好活着")那么,请注意窗体的文字。如图:
java做窗口的话,需要用swing技术,之后创建JFrame 等组件,即可完成窗口创建工作。package inter.frameimport java.awt.BorderLayout
import java.awt.event.ActionEvent
import java.awt.event.ActionListenerimport javax.swing.JFrame
import javax.swing.JMenu
import javax.swing.JMenuBar
import javax.swing.JMenuItem
import javax.swing.JOptionPanepublic class MenuTest { /**
* @param args
*/
JFrame frame //定义一个窗口架构
JMenuBar mb//定义窗口的菜单工具栏
JMenu m//定义菜单
JMenuItem mi1//定义菜单的内容
JMenuItem mi2//定义菜单的内容
public MenuTest() {
initFrame()
initAction()
}
public void initFrame() {
frame = new JFrame()
mb = new JMenuBar()
m = new JMenu("学生查询")
mi1 = new JMenuItem("确认")
mi2 = new JMenuItem("取消")m.add(mi1)
m.add(mi2)
mb.add(m)
frame.add(mb, BorderLayout.NORTH)
frame.setSize(300, 300)//设置窗口大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//设置退出时关闭窗口
frame.setVisible(true)//设置窗口可见
} public void initAction() {
mi1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 具体实现代码根据实际要求填写
System.out.println("click")
JOptionPane.showMessageDialog(null, "你点击了确定按钮")
}
})
mi2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 具体实现代码根据实际要求填写
JOptionPane.showMessageDialog(null, "你点击了取消按钮")
}
})
} public static void main(String[] args) {
new MenuTest()//执行菜单创建
}}
这样:
import java.awt.*
import java.awt.event.*
import javax.swing.*
import java.awt.Graphics
public class MainClass extends JFrame {
public JComboBox box
int flag = 0
jpNewPanel jpNewPanel
public static void main(String[] args) {
MainClass frame = new MainClass()
frame.setBounds(650,300,550,550)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setTitle("信号灯")
frame.setVisible(true)
}
public MainClass() {
box = new JComboBox()
box.addItem("请选择")
box.addItem("红灯")
box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = box.getSelectedIndex()
jpNewPanel.repaint()
}
})
box.addItem("黄灯")
box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = box.getSelectedIndex()
jpNewPanel.repaint()
}
})
box.addItem("绿灯")
box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = box.getSelectedIndex()
jpNewPanel.repaint()
}
})
add(box, BorderLayout.NORTH)
jpNewPanel = new jpNewPanel()
add(jpNewPanel, BorderLayout.CENTER)
}
class jpNewPanel extends JPanel {
protected void paintComponent(Graphics g) {
super.paintComponent(g)
g.drawOval(150, 0, 120, 120)
if (flag == 1) {
g.setColor(Color.RED)
g.fillOval(150, 0, 120, 120)
} else if (flag == 2) {
g.setColor(Color.YELLOW)
g.fillOval(150, 0, 120, 120)
} else if (flag == 3) {
g.setColor(Color.GREEN)
g.fillOval(150, 0, 120, 120)
}
}
}
}
扩展资料:注意事项
每个Road对象都有一个name成员变量来代表方向,有一个vehicles成员变量来代表方向上的车辆集合。
在Road对象的构造方法中启动一个线程每隔一个随机的时间向vehicles集合中增加一辆车(用一个“路线名_id”形式的字符串进行表示)。
在Road对象的构造方法中启动一个定时器,每隔一秒检查该方向上的灯是否为绿,是则打印车辆集合和将集合中的第一辆车移除掉。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)