首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jpanel重叠其他组件

jpanel重叠其他组件
EN

Stack Overflow用户
提问于 2011-10-13 23:42:15
回答 1查看 1.5K关注 0票数 2

当我将JPanel添加到Oracle (基于AWT Container)时,我遇到了严重的问题。我首先添加JPanel,然后添加一些VTextFields (Oracle字段)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

import oracle.ewt.scrolling.scrollBox.ScrollBox;
import oracle.forms.ui.DrawnPanel;
import oracle.forms.ui.FScrollBox;
import oracle.forms.ui.VTextField;

public class OverlapTest {

int w = 800;
int h= 700;

public OverlapTest() {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(w, h);

    DrawnPanel main = new DrawnPanel();

    main.setLayout(null);
    main.setBounds(0, 0, w, h);
    main.setVisible(true);

    VTextField t1 = new VTextField();
    t1.setBounds(100, 100, 130, 22);

    VTextField t2 = new VTextField();
    t2.setBounds(100, 150, 130, 22);

    VTextField t3 = new VTextField();
    t3.setBounds(100, 200, 130, 22);

    final JPanel draw = new JPanel(){
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            Graphics2D g2 = (Graphics2D) g;
            g2.setColor(Color.red);
            g2.fillRect(0, 100, 130, 200);
            g2.dispose();

        }

        @Override
        public void update(Graphics g) {
            paint(g);
        }

    };
    draw.setOpaque(false);
    draw.setBounds(0, 0, w, h);

    main.add(draw);
    main.add(t1);
    main.add(t2);
    main.add(t3);

    ScrollBox sBox = new ScrollBox(main);
    sBox.setBounds(0, 0, w, h);
    sBox.setVScrollInsets(1, 100);
    oracle.forms.ui.FScrollBox fBox = new FScrollBox(sBox, 0, 0);
    fBox.setVisible(true);
    fBox.setBounds(0, 0, w - 50, h - 50);

    main.setComponentZOrder(draw, 3);
    main.setComponentZOrder(t1, 0);
    main.setComponentZOrder(t2, 1);
    main.setComponentZOrder(t3, 2);

    f.add(fBox);

    f.setVisible(true);
}

public static void main(String[] args) {
    OverlapTest test = new OverlapTest();
    }
 }

正如您所看到的,我首先添加JPanel,然后添加setComponentZorder,这是因为我的需求和实际应用程序中不能在所有组件的末尾添加JPanel,所以我按照这样做了。

但是目前我有一个问题,所有其他组件都与JPanel重叠,但是JPanel (红色矩形)的背景总是隐藏这样的其他组件。

这是一幅图像:

我不知道,但是当我使用JTextField时,一切都很好。我在frmall.jar中使用Oracle的组件,您可以从http://www.megafileupload.com/en/file/329640/frmall-jar.html下载frmall.jar,您有什么解决方案使红色矩形与其他组件重叠吗?

对不起,我的英语。

提前谢谢。

现在,我尝试用表单DrawnPanel替换Jpanel,但它仍然存在问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FormCanvas form = new FormCanvas(){
        @Override
        public void paint(Graphics g, Dimension paramDimension,
                Rectangle paramRectangle) {
            // TODO Auto-generated method stub
            super.paint(g, paramDimension, paramRectangle);
            Graphics2D g2 = (Graphics2D) g;
            g2.setColor(Color.red);
            g2.fillRect(0, 100, 200, 200);
            g2.dispose();
        }
    };
DrawnPanel draw = new DrawnPanel();
draw.setPainter(form);
draw.setVisible(true);

所以现在,我的每个组件都是表单组件,但我仍然遇到了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2011-10-14 00:36:34

我提供的第一个建议是,不要将Swing和AWT组件混合在一起,尝试将'Oracle‘jar更新为Swing版本,否则在代码中只使用AWT组件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7764532

复制
相关文章
ORDER BY导致未按预期使用索引
在MySQL中经常出现未按照理想情况使用索引的情况,今天记录一种Order by语句的使用导致未按预期使用索引的情况。
俊才
2019/11/28
2.7K0
【C++】scanf()和scanf_s()函数
scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc++2005开始,VS系统提供了scanf_s()。在调用该函数时,必须提供一个数字以表明最多读取多少位字符。
用户7886150
2021/04/27
2.6K0
scanf的使用,cin和scanf的区别
对于 printf 函数,相信大家并不陌生。之所以称它为格式化输出函数,关键就是该函数可以按用户指定的格式,把指定的数据显示到显示器屏幕上。该函数原型的一般格式如下: int printf(const char * format, … );
秋名山码神
2022/12/13
1.1K0
scanf的使用,cin和scanf的区别
scanf函数与scanf_s函数
ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存泄露。所以vc++2005/2008中提供了scanf_s(),在最新的VS2013中也提供了scanf_s()。在调用时,必须提供一个数字以表明最多读取多少位字符。 目前最新的c11标准中已经将scanf_s函数“转正”了。 http://msdn.microsoft.com/zh-cn/library/w40768et%28VS.80%29.aspx 如果想继续使用scanf这个不安全的函数可以
landv
2018/05/24
1.1K0
使用scanf限定输入
❝有一个这样的需求就是使用scanf限定输入数字。我们该怎么解决呢? ❞ 答案是使用:%[],表示要读入一个字符集合。 小例子   只限定输入数字。 char string[100]; /* 这里只读取数字。*/ scanf("%[0-9]", string); printf("string = %s\n", string);   键盘输入: 12345abc   打印输出: string = 12345 一些常用限定符 数字集合   除了支持scanf,还支持sscanf和fscanf。
Qt君
2020/06/04
1.3K0
C语言/gets()函数和scanf()函数关于字符串的输入
在C语言中,有很多关于输入字符串的函数。在学习和使用C语言时,我们也无法避免需要输入字符串,因此本文是关于C语言中输入字符串的两个函数 gets() 和 scanf() 的。
用户10788736
2023/10/16
4370
c语言scanf函数用法详解_c语言输入scanf格式
本节介绍输入函数 scanf 的用法。scanf 和 printf 一样,非常重要,而且用得非常多,所以一定要掌握。
全栈程序员站长
2022/11/18
4.5K0
C语言 | scanf函数
“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆
小林C语言
2021/03/23
3.7K0
scanf与gets函数混用
2、scanf在gets前调用,这种情况就会出现问题,当输入完scanf中的变量时,运行到gets函数,则不让输入任何字符
idealclover
2018/10/31
1.4K0
C语言 | scanf函数
在C语言中,输入是以计算机主机为主体而言的,从输入设备向计算机输入数据称为输入,C语言本身不包含输入语句。
小林C语言
2021/03/23
5.5K0
C语言 | scanf函数
C语言输入scanf
输入scanf和输出printf有很多相似的地方,但差别也很大,出错的地方也更多。
用户6755376
2020/03/06
4.4K0
C语言输入scanf
在java中关于使用scanner接受char类型字符的方法
这篇文章上次修改于 394 天前,可能其部分内容已经发生变化,如有疑问可询问作者。 import java.util.Scanner; Scanner scanner=new Scanner(); char sex=scanner.next().charAt(0);
Erwin
2019/12/31
2.9K0
scanf具有的安全隐患
如果存储空间不足,数据能被存储到内存中,但不被保护,printf打印输出字符串是在遇到\0结束,而非根据字符串大小输出
大忽悠爱学习
2021/03/04
9110
vs2019中scanf返回值被忽略_vs2017scanf
百度一下之后大致原因是:scanf()函数在读取时不检查边界,所以可能会造成内存泄漏。有一定的安全隐患。例如代码是
全栈程序员站长
2022/11/17
1.2K0
vs2019中scanf返回值被忽略_vs2017scanf
业绩超预期因子
学术界很早就发现,股票市场存在显著的盈余公告后的价格偏移现象(Post-Earnings Announcement Drift PEAD)。通俗解释来说,投资者对于公司的盈利有一个预期值,如果财报公布后,公司的实际盈利超出了投资者预期,公司的股价会上升,会有明显的超额收益。如果实际盈利低于投资者预期,公司股价会下降,会有明显的负向收益。本文基于这一现象构造盈利超预期因子,并对因子进行测试。后台回复“业绩超预期”获取代码和参考文献,限时免费。
量化小白
2020/03/18
2.9K0
业绩超预期因子
C:02---scanf、printf
你以为你输出了helloworld就掌握了printf,来,我接着带你重新认识printf,我这个人比较爱刚代码,来看第一个代码:
用户3479834
2021/02/03
1.2K0
原创 | 函数 scanf 前世今生
上述代码作何解读? 简单,就是让你从标准输入设备(也就是键盘),敲入一个十进制整数,然后放进变量 age 之中。然后做一惊一乍状爆出你的年龄。
用户2617681
2019/08/08
8280
原创 | 函数 scanf 前世今生
Golang实现类似Scan或者Scanf功能
package main import ( _"errors" "fmt" "io" "os" "syscall" "time" "bytes" _"os/exec" "github.com/docker/docker/pkg/term" ) func main() { Stdin() } func Stdin() { var in io
李海彬
2018/03/20
7890
scanf("%*[\n]%[^\n]",s)是什么意思?
在解释标题的用法之前,先看看其他的用法。 不知道你有没有看到过scanf下面这样的用法:
编程珠玑
2020/12/17
6.8K0
scanf("%*[\n]%[^\n]",s)是什么意思?
C语言中的printf()与scanf()
相比于其它的编程语言,C语言的输入输出功能非常强大,可以按照各种要求进行输入输出。
越陌度阡
2021/10/22
1K0

相似问题

在随机-法线NetLogo中设置相同的种子

11

消除Netlogo行为空间中的错误

219

产生重复的随机代码种子

21

splitTools/create_folds设置随机种子和重复

123

根据重复次数设置数据帧子集

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文