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,意思就是分割面板虽然可以加入其它的面板,但其它面板的控件,例如:下拉框等,是无法选用的,无奈的我还是选用第
一种吧