JAVA怎么向窗体中添加控件??

JAVA怎么向窗体中添加控件??,第1张

/** 给个例子你看下吧 同学, 开发swing 最好的利剑 莫过于 NetBeans 6 了 * 用手写也 不用 怎样 很简单 new 一个控件 add 进 去 就 可以了* 希望对你有用 同学*/

import java.awt.FlowLayoutimport javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JList

import javax.swing.JPanel

import javax.swing.SwingUtilities

import javax.swing.WindowConstants

public class download extends JFrame { /**

* @param args

*/

JFrame j

public download(){

j = new JFrame("java tcp/ip 下载")

j.setBounds(100, 100, 800, 600) // 实例 一 窗体

j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)//JJFrame.EXIT_ON_CLOSE

j.getContentPane().setLayout(new FlowLayout(ABORT)) //布局设置

JPanel p = new JPanel()

p.setBounds(100, 100, 100, 100)

p.setLayout(new FlowLayout())

JButton jbtn = new JButton()

jbtn.setText("下载")

p.setSize(100, 100)

String[] data = {"one", "two", "three", "four"}

JList myList = new JList(data)

add(myList)

p.add(jbtn)p.add(myList) // 将 button list 控件 添加 panel 中

j.getContentPane().add(p) // 将 panel 添加 进窗体

j.pack() //自动适应窗体大小

j.setVisible(true)}

public static void main(String[] args) {

// TODO Auto-generated method stub

SwingUtilities.invokeLater(new Runnable(){

public void run() {

// TODO Auto-generated method stub

new download()

}

})

}}

import java.applet.* 

import java.awt.* 

import java.awt.event.* 

import java.util.* 

import javax.swing.* 

import java.awt.geom.* 

import java.io.* 

import java.sql.Connection

class Point implements Serializable 

int x,y 

Color col 

int tool 

int boarder 

Point(int x, int y, Color col, int tool, int boarder) 

this.x = x 

this.y = y 

this.col = col 

this.tool = tool 

this.boarder = boarder 

class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener 

int x = -1, y = -1 

int con = 1//画笔大小 

int Econ = 5//橡皮大小 

int toolFlag = 0//toolFlag:工具标记 

//toolFlag工具对应表: 

//(0--画笔);(1--橡皮);(2--清除); 

//(3--直线);(4--圆);(5--矩形); 

Color c = new Color(0,0,0) //画笔颜色 

BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)//画笔粗细 

Point cutflag = new Point(-1, -1, c, 6, con)//截断标志 

Vector paintInfo = null//点信息向量组 

int n = 1 

FileInputStream picIn = null 

FileOutputStream picOut = null 

ObjectInputStream VIn = null 

ObjectOutputStream VOut = null 

// *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/ 

Panel toolPanel 

Button eraser, drLine,drCircle,drRect 

Button clear ,pen 

Choice ColChoice,SizeChoice,EraserChoice 

Button colchooser 

Label 颜色,大小B,大小E 

//保存功能 

Button openPic,savePic 

FileDialog openPicture,savePicture 

paintboard(String s) 

super(s) 

addMouseMotionListener(this) 

addMouseListener(this) 

paintInfo = new Vector() 

/*各工具按钮及选择项*/ 

//颜色选择 

ColChoice = new Choice() 

ColChoice.add("black") 

ColChoice.add("red") 

ColChoice.add("blue") 

ColChoice.add("green") 

ColChoice.addItemListener(this) 

//画笔大小选择 

SizeChoice = new Choice() 

SizeChoice.add("1") 

SizeChoice.add("3") 

SizeChoice.add("5") 

SizeChoice.add("7") 

SizeChoice.add("9") 

SizeChoice.addItemListener(this) 

//橡皮大小选择 

EraserChoice = new Choice() 

EraserChoice.add("5") 

EraserChoice.add("9") 

EraserChoice.add("13") 

EraserChoice.add("17") 

EraserChoice.addItemListener(this) 

//////////////////////////////////////////////////// 

toolPanel = new Panel() 

clear = new Button("清除") 

eraser = new Button("橡皮") 

pen = new Button("画笔") 

drLine = new Button("画直线") 

drCircle = new Button("画圆形") 

drRect = new Button("画矩形") 

openPic = new Button("打开图画") 

savePic = new Button("保存图画") 

colchooser = new Button("显示调色板") 

//各组件事件监听 

clear.addActionListener(this) 

eraser.addActionListener(this) 

pen.addActionListener(this) 

drLine.addActionListener(this) 

drCircle.addActionListener(this) 

drRect.addActionListener(this) 

openPic.addActionListener(this) 

savePic.addActionListener(this) 

colchooser.addActionListener(this) 

颜色 = new Label("画笔颜色",Label.CENTER) 

大小B = new Label("画笔大小",Label.CENTER) 

大小E = new Label("橡皮大小",Label.CENTER) 

//面板添加组件 

toolPanel.add(openPic) 

toolPanel.add(savePic) 

toolPanel.add(pen) 

toolPanel.add(drLine) 

toolPanel.add(drCircle) 

toolPanel.add(drRect) 

toolPanel.add(颜色) toolPanel.add(ColChoice) 

toolPanel.add(大小B) toolPanel.add(SizeChoice) 

toolPanel.add(colchooser) 

toolPanel.add(eraser) 

toolPanel.add(大小E) toolPanel.add(EraserChoice) 

toolPanel.add(clear) 

//工具面板到APPLET面板 

add(toolPanel,BorderLayout.NORTH) 

setBounds(60,60,900,600) setVisible(true) 

validate() 

//dialog for save and load 

openPicture = new FileDialog(this,"打开图画",FileDialog.LOAD) 

openPicture.setVisible(false) 

savePicture = new FileDialog(this,"保存图画",FileDialog.SAVE) 

savePicture.setVisible(false) 

openPicture.addWindowListener(new WindowAdapter() 

public void windowClosing(WindowEvent e) 

{ openPicture.setVisible(false) } 

}) 

savePicture.addWindowListener(new WindowAdapter() 

            @Override

public void windowClosing(WindowEvent e) 

{ savePicture.setVisible(false) } 

}) 

addWindowListener(new WindowAdapter() 

public void windowClosing(WindowEvent e) 

{ System.exit(0)} 

}) 

public void paint(Graphics g) 

Graphics2D g2d = (Graphics2D)g 

Point p1,p2 

n = paintInfo.size() 

if(toolFlag==2) 

g.clearRect(0,0,getSize().width,getSize().height)//清除 

for(int i=0 i<n i++){ 

p1 = (Point)paintInfo.elementAt(i) 

p2 = (Point)paintInfo.elementAt(i+1) 

size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL) 

g2d.setColor(p1.col) 

g2d.setStroke(size) 

if(p1.tool==p2.tool) 

switch(p1.tool) 

case 0://画笔 

Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y) 

g2d.draw(line1) 

break 

case 1://橡皮 

g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder) 

break 

case 3://画直线 

Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y) 

g2d.draw(line2) 

break 

case 4://画圆 

Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y)) 

g2d.draw(ellipse) 

break 

case 5://画矩形 

Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y)) 

g2d.draw(rect) 

break 

case 6://截断,跳过 

i=i+1 

break 

default : 

}//end switch 

}//end if 

}//end for 

public void itemStateChanged(ItemEvent e) 

if(e.getSource()==ColChoice)//预选颜色 

String name = ColChoice.getSelectedItem() 

            switch (name) {

                case "black":

                    c = new Color(0,0,0)

                    break

                case "red":

                    c = new Color(255,0,0)

                    break

                case "green":

                    c = new Color(0,255,0)

                    break

                case "blue":

                    c = new Color(0,0,255)

                    break

            }

else if(e.getSource()==SizeChoice)//画笔大小 

String selected = SizeChoice.getSelectedItem() 

            switch (selected) {

                case "1":

                    con = 1

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

                    break

                case "3":

                    con = 3

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

                    break

                case "5":

                    con = 5

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

                    break

                case "7":

                    con = 7

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

                    break

                case "9":

                    con = 9

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

                    break

            }

else if(e.getSource()==EraserChoice)//橡皮大小 

String Esize = EraserChoice.getSelectedItem() 

if(Esize=="5") 

{ Econ = 5*2 } 

else if(Esize=="9") 

{ Econ = 9*2 } 

else if(Esize=="13") 

{ Econ = 13*2 } 

else if(Esize=="17") 

{ Econ = 17*3 } 

public void mouseDragged(MouseEvent e) 

Point p1  

switch(toolFlag){ 

case 0://画笔 

x = (int)e.getX() 

y = (int)e.getY() 

p1 = new Point(x, y, c, toolFlag, con) 

paintInfo.addElement(p1) 

repaint() 

break 

case 1://橡皮 

x = (int)e.getX() 

y = (int)e.getY() 

p1 = new Point(x, y, null, toolFlag, Econ) 

paintInfo.addElement(p1) 

repaint() 

break 

default : 

public void mouseMoved(MouseEvent e) {} 

public void update(Graphics g) 

paint(g) 

public void mousePressed(MouseEvent e) 

Point p2 

switch(toolFlag){ 

case 3://直线 

x = (int)e.getX() 

y = (int)e.getY() 

p2 = new Point(x, y, c, toolFlag, con) 

paintInfo.addElement(p2) 

break 

case 4: //圆 

x = (int)e.getX() 

y = (int)e.getY() 

p2 = new Point(x, y, c, toolFlag, con) 

paintInfo.addElement(p2) 

break 

case 5: //矩形 

x = (int)e.getX() 

y = (int)e.getY() 

p2 = new Point(x, y, c, toolFlag, con) 

paintInfo.addElement(p2) 

break 

default : 

public void mouseReleased(MouseEvent e) 

Point p3 

switch(toolFlag){ 

case 0://画笔 

paintInfo.addElement(cutflag) 

break 

case 1: //eraser 

paintInfo.addElement(cutflag) 

break 

case 3://直线 

x = (int)e.getX() 

y = (int)e.getY() 

p3 = new Point(x, y, c, toolFlag, con) 

paintInfo.addElement(p3) 

paintInfo.addElement(cutflag) 

repaint() 

break 

case 4: //圆 

x = (int)e.getX() 

y = (int)e.getY() 

p3 = new Point(x, y, c, toolFlag, con) 

paintInfo.addElement(p3) 

paintInfo.addElement(cutflag) 

repaint() 

break 

case 5: //矩形 

x = (int)e.getX() 

y = (int)e.getY() 

p3 = new Point(x, y, c, toolFlag, con) 

paintInfo.addElement(p3) 

paintInfo.addElement(cutflag) 

repaint() 

break 

default: 

public void mouseEntered(MouseEvent e){} 

public void mouseExited(MouseEvent e){} 

public void mouseClicked(MouseEvent e){} 

public void actionPerformed(ActionEvent e) 

if(e.getSource()==pen)//画笔 

{toolFlag = 0} 

if(e.getSource()==eraser)//橡皮 

{toolFlag = 1} 

if(e.getSource()==clear)//清除 

toolFlag = 2 

paintInfo.removeAllElements() 

repaint() 

if(e.getSource()==drLine)//画线 

{toolFlag = 3} 

if(e.getSource()==drCircle)//画圆 

{toolFlag = 4} 

if(e.getSource()==drRect)//画矩形 

{toolFlag = 5} 

if(e.getSource()==colchooser)//调色板 

Color newColor = JColorChooser.showDialog(this,"调色板",c) 

c = newColor 

if(e.getSource()==openPic)//打开图画 

openPicture.setVisible(true) 

if(openPicture.getFile()!=null) 

int tempflag 

tempflag = toolFlag 

toolFlag = 2  

repaint() 

try{ 

paintInfo.removeAllElements() 

File filein = new File(openPicture.getDirectory(),openPicture.getFile()) 

picIn = new FileInputStream(filein) 

VIn = new ObjectInputStream(picIn) 

paintInfo = (Vector)VIn.readObject() 

VIn.close() 

repaint() 

toolFlag = tempflag 

catch(ClassNotFoundException IOe2) 

repaint() 

toolFlag = tempflag 

System.out.println("can not read object") 

catch(IOException IOe) 

repaint() 

toolFlag = tempflag 

System.out.println("can not read file") 

if(e.getSource()==savePic)//保存图画 

savePicture.setVisible(true) 

try{ 

File fileout = new File(savePicture.getDirectory(),savePicture.getFile()) 

picOut = new FileOutputStream(fileout) 

VOut = new ObjectOutputStream(picOut) 

VOut.writeObject(paintInfo) 

VOut.close() 

catch(IOException IOe) 

System.out.println("can not write object") 

}//end paintboard 

public class Pb 

public static void main(String args[]) 

{ new paintboard("画图程序") } 

}

用else if不行啊,数据库里如果“系部”有30几个,难道你一个个写过去吗?可以用for循环,把系部加入第一个列表然后 对该列表添加监听器 addActionListener 通过该列表.getSelectedItem得到选中的项 然后专业可以写一个类。里面有一个属性是“系部” 当那些个专业的系部属性为 第一个列表中的值的时候把那些专业的“专业名”属性加入第二个列表中 依次类推我给你一个关于省份,城市,和营业网点的3级下拉列表的例子,你稍微修改就可以了

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.util.ArrayList

import java.util.Listimport javax.swing.JComboBox

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel@SuppressWarnings("serial")

public class Test extends JFrame{

private List<String>provinces=new ArrayList<String>()

private List<City>citys=new ArrayList<City>()

private List<Branch>branchs=new ArrayList<Branch>()

private JComboBox provinceBox=new JComboBox()

private JComboBox cityBox=new JComboBox()

private JComboBox branchBox=new JComboBox()

public Test() {

init()

initData()

setBox()

addHandler()

}

public void init(){//初始化GUI界面

JPanel panel=new JPanel()

this.add(panel)

//panel.setLayout(new GridLayout(3,2))

panel.add(new JLabel("省份:"))

panel.add(provinceBox)

panel.add(new JLabel("城市:"))

panel.add(cityBox)

panel.add(new JLabel("营业网点"))

panel.add(branchBox)

}

private void initData(){//初始化省份 城市和营业网点 这些数据实际上应该从数据库里查询

provinces.add("浙江")

provinces.add("广西")

citys.add(new City("浙江","宁波"))

citys.add(new City("浙江","金华"))

citys.add(new City("广西","桂林"))

citys.add(new City("广西","南宁"))

branchs.add(new Branch("浙江","宁波", "宁波镇海网点"))

branchs.add(new Branch("浙江","宁波", "宁波北仑网点"))

branchs.add(new Branch("浙江","金华", "金华网点1"))

branchs.add(new Branch("浙江","金华", "金华网点2"))

branchs.add(new Branch("广西","桂林", "桂林网点1"))

branchs.add(new Branch("广西","桂林", "桂林网点2"))

branchs.add(new Branch("广西","南宁", "南宁网点1"))

branchs.add(new Branch("广西","南宁", "南宁网点2"))

}

private void setBox(){//设置下拉列表里的值

//设置先在各项列表里加入的值

provinceBox.removeAllItems()

cityBox.removeAllItems()

branchBox.removeAllItems()

provinceBox.addItem("所有")

cityBox.addItem("所有")

branchBox.addItem("所有")

for (int i = 0i <provinces.size()i++) {

provinceBox.addItem(provinces.get(i))

}

for (int i = 0i <citys.size()i++) {

cityBox.addItem(citys.get(i).getCity())

}

for (int i = 0i <branchs.size()i++) {

branchBox.addItem(branchs.get(i).getBranch())

}

}

private void addHandler(){//设置3个下拉列表的级联关系

provinceBox.addActionListener(new ActionListener() {

//监听province下拉列表

@Override

public void actionPerformed(ActionEvent e) {

cityBox.removeAllItems()

cityBox.addItem("所有")

branchBox.removeAllItems()

branchBox.addItem("所有")

String province=provinceBox.getSelectedItem().toString()//得到当前点中的值

//在city下拉列表中 遍历citys,如果citys[i]的省份属性和它相同则添加进去,其中要考虑是所有的特殊情况

if(province.equals("所有")){

for (int i = 0i <citys.size()i++) {

cityBox.addItem(citys.get(i).getCity())

}

}else{

for (int i = 0i <citys.size()i++) {

if(citys.get(i).getProvince().equals(province)){

cityBox.addItem(citys.get(i).getCity())

}

}

}

//在branch下拉列表中 遍历branchs,如果branchs[i]的省份属性和它相同则添加进去,其中要考虑是所有的特殊情况

if(province.equals("所有")){

for (int i = 0i <branchs.size()i++) {

branchBox.addItem(branchs.get(i).getBranch())

}

}else{

for (int i = 0i <branchs.size()i++) {

if(branchs.get(i).getProvince().equals(province)){

branchBox.addItem(branchs.get(i).getBranch())

}

}

}

}

})

//监听cityBox下拉列表

cityBox.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

branchBox.removeAllItems()

branchBox.addItem("所有")

if(cityBox.getSelectedItem()==null){

return

}

String city=cityBox.getSelectedItem().toString()//得到当前点中的值

if(city.equals("所有")){//如果是所有,则看省份框中是什么值

if(provinceBox.getSelectedItem().equals("所有")){

for (int i = 0i <branchs.size()i++) {

branchBox.addItem(branchs.get(i).getBranch())

}

}else{

for (int i = 0i <branchs.size()i++) {

if(branchs.get(i).getProvince().equals(provinceBox.getSelectedItem())){

branchBox.addItem(branchs.get(i).getBranch())

}

}

}

}else{

for (int i = 0i <branchs.size()i++) {

if(city.equals(branchs.get(i).getCity())){

branchBox.addItem(branchs.get(i).getBranch())

}

}

}

}

})

}

private void showMe(){

this.setVisible(true)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

this.pack()

}

public static void main(String[] args) {

new Test().showMe()

}

} //下面是要用的2个类

class City{//城市类

private String city//城市名

private String province//所属省份

public City() {

// TODO Auto-generated constructor stub

}

public City(String province,String city) {

super()

this.province = province

this.city = city

} public String getCity() {

return city

}

public void setCity(String city) {

this.city = city

}

public String getProvince() {

return province

}

public void setProvince(String province) {

this.province = province

}

}

class Branch{//网点类

private String province//所属省份

private String city//所属城市

private String branch//网点名 public Branch(String province, String city, String branch) {

super()

this.province = province

this.city = city

this.branch = branch

}

public String getBranch() {

return branch

}

public void setBranch(String branch) {

this.branch = branch

}

public String getCity() {

return city

}

public void setCity(String city) {

this.city = city

}

public String getProvince() {

return province

}

public void setProvince(String province) {

this.province = province

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11338290.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存