Java分割面板中无法使用所含面板的小组件

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值