Text1
package xiyouNavigationCode; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Image; import java.awt.Label; import java.awt.Panel; import java.awt.Toolkit; import java.net.URL; import javax.swing.*; public class Test2 { public static void main(String[] args) { //主函数 new PJLabel(); } //对组件进行处理 public static class PJLabel extends JFrame{ public PJLabel(){ //得到下拉选项框 JComboBox<String> ja1 = new JComboBox<>(new MyComboBox()); JLabel ja = new JLabel("起点"); JComboBox<String> jb1 = new JComboBox<>(new MyComboBox()); JLabel jb = new JLabel("终点"); JLabel jc= new JLabel("搜索结果"); JTextArea jc1=new JTextArea("结果显示处",30,30); //容器处理 setTitle("西邮导航"); Container c=getContentPane(); setLayout(new BorderLayout(10, 10)); setBounds(0, 0, 2000, 1080); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //加图片 JLabel la=new JLabel(); URL url=PJLabel.class.getResource("xiyou.jpg"); Icon ic=new ImageIcon(url); la.setIcon(ic); la.setBounds(20, 20, 1350, 1050); //la.setOpaque(true); c.add(la,BorderLayout.WEST);//加图片 setVisible(true);// 如不加,不显示,点几下才能显示 //加框框 //先做一个面板 Panel p=new Panel(new GridLayout(20, 2, 10, 10)); Panel p1=new Panel(new BorderLayout()); //ja.setPreferredSize(new Dimension(100,20)) ; p.add(ja); p.add(ja1); p.add(jb); p.add(jb1); p.add(jc); p.add(jc1); p1.add(p,BorderLayout.CENTER); c.add(p1); setVisible(true); } } } //制作下拉框 class MyComboBox extends AbstractListModel<String> implements ComboBoxModel<String> { String selecteditem = null; String[] test = { "水煮鸽子", "图书馆", "体育馆" ,"西邮正门","行政楼","学术交流中心宾馆", "A栋教学楼","B栋教学楼","一号实验楼","二号实验楼","三号实验楼", "大学生活动中心","图书馆","校史馆","情人湖", "体育馆","体育场","网球场","临时停车场","土操场","浴室(西区)", "西邮天桥","校医务室","美食广场","旭日苑(西区食堂)","超市(西区)", "西区宿舍楼","教师公寓","浴室(东区)","东区宿舍楼","东升苑(东区食堂)", "东区实验教学楼","东区正门"}; public String getElementAt(int index) { return test[index]; } public int getSize() { return test.length; } public void setSelectedItem(Object item) { selecteditem = (String) item; } public Object getSelectedItem() { return selecteditem; } public int getIndex() { for (int i = 0; i < test.length; i++) { if (test[i].equals(getSelectedItem())) return i; } return 0; } }
Texe2
package xiyouNavigationCode; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Panel; import java.net.URL; import javax.swing.AbstractListModel; import javax.swing.ComboBoxModel; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.WindowConstants; import xiyouNavigationCode.Test2.PJLabel; public class Test3 extends JFrame{ public static void main(String[] args) { new write(); } public static class write extends JFrame{ public write(){ //容器处理 setTitle("西邮导航"); Container c=getContentPane(); setLayout(new BorderLayout(10, 10)); setBounds(0, 0, 2000, 1080); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //分割面板 // 创建一个水平方向的分割面板 final JSplitPane hSplitPane = new JSplitPane(); // 分隔条左侧的宽度为40像素 hSplitPane.setDividerLocation(1000); // 添加到指定区域 getContentPane().add(hSplitPane, BorderLayout.CENTER); // 在水平面板左侧添加一个标签组件 // 创建一个垂直方向的分割面板 final JSplitPane vSplitPane = new JSplitPane( JSplitPane.VERTICAL_SPLIT); // 分隔条上方的高度为30像素 vSplitPane.setDividerLocation(100); vSplitPane.setDividerSize(8);// 分隔条的宽度为8像素 vSplitPane.setOneTouchExpandable(true);// 提供UI小部件 // 在调整分隔条位置时面板的重绘方式为连续绘制 vSplitPane.setContinuousLayout(true); hSplitPane.setRightComponent(vSplitPane);// 添加到水平面板的右侧 // 在垂直面板上方添加一个标签组件 // 在垂直面板下方添加一个标签组件 vSplitPane.setRightComponent(new JLabel(" 3")); //得到下拉选项框 JComboBox<String> ja1 = new JComboBox<>(new MyComboBox()); JLabel ja = new JLabel("起点"); JComboBox<String> jb1 = new JComboBox<>(new MyComboBox()); JLabel jb = new JLabel("终点"); JLabel jc= new JLabel("搜索结果"); JTextArea jc1=new JTextArea("结果显示处",30,30); //先做一个面板,加选项 Panel p=new Panel(new GridLayout(20, 2, 10, 10)); Panel p1=new Panel(new BorderLayout()); ja.setPreferredSize(new Dimension(100,20)) ; p.add(ja); p.add(ja1); p.add(jb); p.add(jb1); p.add(jc); p.add(jc1); p1.add(p,BorderLayout.CENTER); vSplitPane.setLeftComponent(p1); setVisible(true); //加图片 //加图片 JLabel la=new JLabel(); URL url=PJLabel.class.getResource("xiyou.jpg"); Icon ic=new ImageIcon(url); la.setIcon(ic); la.setBounds(20, 20, 1350, 1050); //la.setOpaque(true); //加图片 hSplitPane.setLeftComponent(la); setVisible(true);// 如不加,不显示,点几下才能显示 } } } //制作下拉框 class MyComboBox extends AbstractListModel<String> implements ComboBoxModel<String> { String selecteditem = null; String[] test = { "水煮鸽子", "图书馆", "体育馆" ,"西邮正门","行政楼","学术交流中心宾馆", "A栋教学楼","B栋教学楼","一号实验楼","二号实验楼","三号实验楼", "大学生活动中心","图书馆","校史馆","情人湖", "体育馆","体育场","网球场","临时停车场","土操场","浴室(西区)", "西邮天桥","校医务室","美食广场","旭日苑(西区食堂)","超市(西区)", "西区宿舍楼","教师公寓","浴室(东区)","东区宿舍楼","东升苑(东区食堂)", "东区实验教学楼","东区正门"}; public String getElementAt(int index) { return test[index]; } public int getSize() { return test.length; } public void setSelectedItem(Object item) { selecteditem = (String) item; } public Object getSelectedItem() { return selecteditem; } public int getIndex() { for (int i = 0; i < test.length; i++) { if (test[i].equals(getSelectedItem())) return i; } return 0; } }对于Text1和Text2,同样使用了下拉框,但text1能用,但text2就不能用了,将text2中的分割面板代码注释掉,我们会发现无分割面板之后,下拉框其实是可以用的,经过查了一下午资料,才明白分割面板中无contious Layout,意思就是分割面板虽然可以加入其它的面板,但其它面板的控件,例如:下拉框等,是无法选用的,无奈的我还是选用第
一种吧