
这样:
import javaawt;
import javaawtevent;
import javaxswing;
import javaawtGraphics;
public class MainClass extends JFrame {
public JComboBox box;
int flag = 0;
jpNewPanel jpNewPanel;
public static void main(String[] args) {
MainClass frame = new MainClass();
framesetBounds(650,300,550,550);
framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
framesetTitle("信号灯");
framesetVisible(true);
}
public MainClass() {
box = new JComboBox();
boxaddItem("请选择");
boxaddItem("红灯");
boxaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = boxgetSelectedIndex();
jpNewPanelrepaint();
}
});
boxaddItem("黄灯");
boxaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = boxgetSelectedIndex();
jpNewPanelrepaint();
}
});
boxaddItem("绿灯");
boxaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = boxgetSelectedIndex();
jpNewPanelrepaint();
}
});
add(box, BorderLayoutNORTH);
jpNewPanel = new jpNewPanel();
add(jpNewPanel, BorderLayoutCENTER);
}
class jpNewPanel extends JPanel {
protected void paintComponent(Graphics g) {
superpaintComponent(g);
gdrawOval(150, 0, 120, 120);
if (flag == 1) {
gsetColor(ColorRED);
gfillOval(150, 0, 120, 120);
} else if (flag == 2) {
gsetColor(ColorYELLOW);
gfillOval(150, 0, 120, 120);
} else if (flag == 3) {
gsetColor(ColorGREEN);
gfillOval(150, 0, 120, 120);
}
}
}
}
扩展资料:
注意事项
每个Road对象都有一个name成员变量来代表方向,有一个vehicles成员变量来代表方向上的车辆集合。
在Road对象的构造方法中启动一个线程每隔一个随机的时间向vehicles集合中增加一辆车(用一个“路线名_id”形式的字符串进行表示)。
在Road对象的构造方法中启动一个定时器,每隔一秒检查该方向上的灯是否为绿,是则打印车辆集合和将集合中的第一辆车移除掉。
问题不在于java,在于你没有了解java的GUI布局。
AWT和swing下的窗口(对话框)默认布局是BorderLayout,此时容器划分为上北、下南两个窄行,左西右东两个窄列,其余区域为中央。在将子部件添加到容器上时,如果指定了区域,会添加到对应的区域的,如:add(button,BorderLayoutSOUTH);如不指定区域,效果是所有未使用的区域将合并为一个区域,新添加的组件在此区域。正如你代码中的添加。
而在此布局下,南北行的高度是子部件自行决定的,就是说子部件高度不变,宽度将被缩放到容器相同的宽度;东西列的子部件宽度不变,高度被缩放到容器除南北行之外的高度;中央子部件的宽度高度都被缩放到容器除南北行东西列之外的宽度高度。
若想自己完全控制组件大小,则需要使用自定义布局,如别人的回答中的setLayout(null),不过必须在代码中手动设定每一个子部件的大小和位置,否则子部件使用默认大小0,0和位置0,0,子部件就看不见了。这种方法不推荐。一般是使用其它的布局。比如在窗口中对应区域加入面板,面板的默认布局是流式,将子部件加入到面板而不是窗口,这样保持了子部件的最适合大小。即:
Container c=getContentPane();
JPanel pan=new JPanel();
cadd(pan);
JButton button=new JButton("button");
panadd(button);
另外,createJFrame方法的第一句根本没有用处,因为你的程序主类就是JFrame子类,当你的程序主类实例化时,JFrame已经潜在地实例化了,就不必另JFrame jf=new JFrame()了。
此时,你的程序主类实例就是一个JFrame,所以我给你的这些代码中getContentPane方法调用直接使用自身(父类JFrame)的方法:Container c=getContentPane();
将控件按照实际需要,放在布局管理器中,可以方便地对其进行管理。窗口大小变化时,将会自动进行调整变化。
如果将自己创建的控件放在布局管理器中,手工的改变控件的大小时就不能自主了。因为布局管理器已经掌控了控件,自动替进行管理了,不需要进行移动和调整大小了。
以上就是关于JAVA 编写一个带有窗口的应用程序全部的内容,包括:JAVA 编写一个带有窗口的应用程序、Java编程,为什么唯一一个按钮布满整个窗体、在java中如何 取消窗体的布局管理器 求语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)