JTabbedPane插入相同容器导致的问题

roycxshun 2009-09-01 10:36:33
曾经在项目中用到了JTabbedPane,希望做到一些比较好看的效果,但因为某些原因所以放弃了它。
现在希望可以得到解答。先谢谢大家了。
就是我希望在JTabbedPane插入几个标签,而几个标签中有用到相同的内容,但它们会出现一些奇怪的问题,就是如果前一个标签页用到了下一个标签页用到的内容,那个这个标签页的内容就会不显示,而只有后面的标签页的内容会显示。就如同下面的这个例子一样(因为项目的代码更改了,所以只能用一个小例子来说明一下自己的问题,请见谅):

当两个都是ta1来插入(或者同时用ta2)时,第一个标签页的内容会显示不出来,而直接显示第二个标签页的内容;而当用在第一个标签页用ta1,在第二个标签页用ta2,或者调换的时候就不会出现这样的问题。我想知道是什么原因。谢谢
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Win extends JFrame{
public static void main(String[] args){
Win win = new Win();
}
public Win(){
JTextArea ta1 = new JTextArea();
//JTextArea ta2 = new JTextArea();
JTabbedPane tp = new JTabbedPane();
ta1.append("show me the money");
ta1.append("please show me why");
//ta2.append("showme why");
tp.insertTab("标签一",null,ta1,"标签一",0);
//tp.insertTab("标签二",null,ta2,"标签二",1);
add(tp);
setLayout(new FlowLayout());
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,400,300);
}
}
...全文
98 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
roycxshun 2009-09-02
  • 打赏
  • 举报
回复
请问有人遇到过吗?希望可以得到解答。因为查了很多资料都没讲到这方面的。
roycxshun 2009-09-02
  • 打赏
  • 举报
回复
哦,好的,谢谢dz007大哥。
dz007 2009-09-02
  • 打赏
  • 举报
回复
我说的是Swing ,其他的像VB,C#之类的一般都是直接拖下来,没有尝试过,应该也是不行的吧
roycxshun 2009-09-02
  • 打赏
  • 举报
回复
请问这是JAVA的规定还是其他语言都一样呢?
roycxshun 2009-09-02
  • 打赏
  • 举报
回复
一直都这样,好像只有JAVA是这样的吧,其他的倒没什么发现这样的问题。谢谢了。结帖罗。
dz007 2009-09-02
  • 打赏
  • 举报
回复
这边加了,先前加的就没了,好像一直都是这样的

不然,两个按钮共享一个Model,不太现实啊
roycxshun 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dz007 的回复:]
控件还可以重复添加的么………………
[/Quote]
你的意思是说:控件不能重复添加,这是JAVA SE的规定吗?
dz007 2009-09-02
  • 打赏
  • 举报
回复
控件还可以重复添加的么………………
roycxshun 2009-09-02
  • 打赏
  • 举报
回复
嗯,是啊,如果相同容器的话,会把前面一个容器的tab覆盖。
justinavril 2009-09-02
  • 打赏
  • 举报
回复
我感觉这样不行 可能是加入的时候 将之前的tab覆盖了 这是我的理解 不知道对不对
justinavril 2009-09-02
  • 打赏
  • 举报
回复
噢 还没有完全解决 上面那个代码 只解决了相同内容出问题的情况 但是如果添加相同的ta1 好像还是有问题
justinavril 2009-09-02
  • 打赏
  • 举报
回复
解决了 你看一下 应该还是你的容器放置的顺序有问题 哈哈 结贴给分吧

import javax.swing.*;

public class JTabbedTest extends JFrame {
JTabbedPane tp = new JTabbedPane(JTabbedPane.TOP);
JPanel p1 = new JPanel();

JTextArea ta1 = new JTextArea();
JTextArea ta2 = new JTextArea();

public JTabbedTest(){
ta1.append("show me the money");
ta2.append("show me the money");

tp.add("Tab1", ta1);
tp.add("Tab2", ta2);
p1.add(tp);
getContentPane().add(p1);
}

public static void main(String[] args) {
JTabbedTest a = new JTabbedTest();
a.setSize(300, 300);
a.setVisible(true);
}
}
roycxshun 2009-09-02
  • 打赏
  • 举报
回复
对这样的话,是都能显示,但当你两个标签都用同一个容器,如:
JTextArea ta1 = new JTextArea();
JTabbedPane tp = new JTabbedPane();
ta1.append("show me the money");
ta1.append("please show me why");
tp.insertTab("标签一",null,ta1,"标签一",0);
tp.insertTab("标签二",null,ta1,"标签二",1);
add(tp);
setLayout(new FlowLayout());
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,400,300);
这样就会出问题了,只能显示标签二,而标签一似乎不见了。
justinavril 2009-09-02
  • 打赏
  • 举报
回复
我运行的是下面的代码,两个标签都能显示。楼主能不能贴出来有问题的代码?


JTextArea ta1 = new JTextArea();
JTextArea ta2 = new JTextArea();
JTabbedPane tp = new JTabbedPane();

ta1.append("show me the money");
ta1.append("please show me why");
ta2.append("showme why");
tp.insertTab("标签一",null,ta1,"标签一",0);
tp.insertTab("标签二",null,ta2,"标签二",1);
add(tp);

setLayout(new FlowLayout());
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,400,300);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧