Java JFrame怎么让一个部件覆盖另外一个部件
RT比如让一个JLabel部件覆盖到一个按钮部件的上面又可以看到下面的按钮另外怎么让文本换行比如我想让button显示的文本是A5而不是A5...
RT 比如让一个JLabel部件覆盖到一个按钮部件的上面又可以看到下面的按钮
另外怎么让文本换行 比如我想让button显示的文本是
A
5
而不是
A5 展开
另外怎么让文本换行 比如我想让button显示的文本是
A
5
而不是
A5 展开
展开全部
JFrame中一个组件覆盖另外一个组件
步骤一:设置布局为空布局
步骤二:设置两个组件的位置,大小一致,就可以实现一个组件对另外一个组件的覆盖
说明:先加入的组件,会显示在最上面,后加入的组件,会在底层。
为了比较直观,清晰的显示,我们可以把底层的组件大小,稍微设置大一点
代码如下
import javax.swing.*;
import java.awt.Color;
public class FrameDemo extends JFrame {
public static void main(String[] args) {
FrameDemo frame = new FrameDemo();
frame.setVisible(true);
}
public FrameDemo() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200, 200);
setLocationRelativeTo(null);
getContentPane().setLayout(null);//设置布局为空布局
JPanel jp1 = new JPanel();
jp1.setBounds(10, 10, 50, 50);
getContentPane().add(jp1);//先加入的组件,显示在上面
jp1.setBackground(Color.RED);//设置该组件的背景色为红色
JPanel jp2 = new JPanel();
jp2.setBounds(10, 10, 60, 60);
getContentPane().add(jp2);//后加入的组件,显示在下面
jp2.setBackground(Color.BLACK);//设置该组件的背景色为黑色
}
}
让一个JLabel部件覆盖到一个按钮部件的上面又可以看到下面的按钮
注意的是按钮组件比较特殊,获得焦点后,内容区域会重绘,导致Label看不见。所以要进行特殊处理。
import javax.swing.*;
import java.awt.Color;
public class FrameDemo2 extends JFrame {
public static void main(String[] args) {
FrameDemo2 frame = new FrameDemo2();
frame.setVisible(true);
}
public FrameDemo2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200, 200);
setLocationRelativeTo(null);
getContentPane().setLayout(null);//设置布局为空布局
JLabel jl = new JLabel("label文字");
jl.setForeground(Color.RED);
jl.setBounds(57, 81, 54, 15);
getContentPane().add(jl);
JButton jb = new JButton("按钮");
jb.setBounds(32, 48, 104, 57);
jb.setFocusable(false);//设置不获得焦点,避免获得焦点后,按钮内容重绘,导致JLabel无法显示
//jb.setContentAreaFilled(false);//这行代码可以使按钮区域透明,就不会在获得焦点后重绘了
getContentPane().add(jb);
}
}
怎么让文本换行 让按钮显示多行文字?
JButton jb1 = new JButton("测试\n按钮");
使用传统的“\n”,"\r\n"对文字换行处理按钮换行,没有任何效果
那么不得不另辟蹊径了,swing支持简单的HTML标签,所以可以通过HTML标签来实现换行的效果
JButton jb2 = new JButton("<html>测试<br>按钮</html>");//使用HTML标记语言来换行
拓展:
虽然Swing对HTML的支持不完善,只支持简单的一些标签效果的显示,但是只要我们使用恰当,那么会收到意想不到的效果。
2015-04-13
展开全部
很简单的,就是通过参数传递的方法!
我做了个简单的例子,可以参考一下:
//这是b.java文件
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class b extends JFrame implements ActionListener{
JButton button1=new JButton("显示窗体a");
public b()
{
super("我是窗体b");
this.setBounds(250,80,350,400);
this.setVisible(true);
this.setResizable(false);
button1.setBounds(35,140,70,20);
button1.addActionListener(this);
this.add(button1);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button1)
{
String title ="我是窗体b传过来的值";
new a(title);
}
}
public static void main(String argv[])
{
new b();
}
}
//这是a.java文件
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 12-6-19
* Time: 上午7:31
* To change this template use File | Settings | File Templates.
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class a extends JFrame{
JLabel label1 = new JLabel("学号:",JLabel.CENTER);
public a(String parameter)
{
super("我是窗体a");
String str=parameter;
this.setBounds(250,80,350,400);
this.setVisible(true);
this.setResizable(false);
this.add(label1);
label1.setText(parameter);
}
}
我做了个简单的例子,可以参考一下:
//这是b.java文件
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class b extends JFrame implements ActionListener{
JButton button1=new JButton("显示窗体a");
public b()
{
super("我是窗体b");
this.setBounds(250,80,350,400);
this.setVisible(true);
this.setResizable(false);
button1.setBounds(35,140,70,20);
button1.addActionListener(this);
this.add(button1);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button1)
{
String title ="我是窗体b传过来的值";
new a(title);
}
}
public static void main(String argv[])
{
new b();
}
}
//这是a.java文件
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 12-6-19
* Time: 上午7:31
* To change this template use File | Settings | File Templates.
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class a extends JFrame{
JLabel label1 = new JLabel("学号:",JLabel.CENTER);
public a(String parameter)
{
super("我是窗体a");
String str=parameter;
this.setBounds(250,80,350,400);
this.setVisible(true);
this.setResizable(false);
this.add(label1);
label1.setText(parameter);
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你想让一个JLabel部件覆盖在上面,同时还能看到下面的按钮,你需要设置上面的部件的透明度,设置为半透明就可以了。而后面这个问题有两种方式,一个是通过换行来做。还有一种办法是设置上面的部件的属性,使他为行间元素。占用整行的位置就可以了。
追问
透明值怎么设置 什么函数
第二个问题 换行是\n么为什么我加了这个后还是换不了行
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询