java Swt 中如何设置Text框和Button按钮透明

有那位懂得的?
问题补充
我想要的是java SWT 画的面板中Text和Button 透明
不是要Awt Swing 的

7个回答

Text:
父容器setBackgroundMode(SWT.INHERIT_FORCE);

Button:
1.构造一个空Image
2.利用org.eclipse.swt.widgets.Control.print(org.eclipse.swt.graphics.GC)将父容器上的内容绘制上去.
3.计算自己在父容器的区域,将Image那个区域的Image调用org.eclipse.swt.graphics.GC.drawImage(org.eclipse.swt.graphics.Image, int, int, int, int, int, int, int, int)绘制上去.
4.如果想实现蒙板效果,在3后再设置gc.setAlpha(200);gc.fillRectangle(0,0,w,h);即可.

package com.test;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.BorderFactory;
import javax.swing.border.TitledBorder;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import java.awt.Rectangle;

public class Test2 extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;

/**
 * This is the default constructor
 */
public Test2() {
    super();
    initialize();
}

/**
 * This method initializes this
 * 
 * @return void
 */
private void initialize() {
    this.setSize(300, 200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
}

/**
 * This method initializes jContentPane
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
    if (jContentPane == null) {
        jContentPane = new JPanel();
        jContentPane.setLayout(null);
        jContentPane.setBackground(new Color(102, 255, 102));
        jContentPane.add(getJButton(), null);
    }
    return jContentPane;
}

/**
 * This method initializes jButton
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton() {
    if (jButton == null) {
        jButton = new JButton();
        jButton.setBounds(new Rectangle(98, 29, 124, 35));
        jButton.setText("aaaaaa");
        jButton.setBackground(new Color(102, 0, 204));
        jButton.setFont(new Font("Dialog", Font.BOLD, 24));
        // jButton.setForeground(new Color(255, 51, 0));
        jButton.setOpaque(false);
        jButton.setBorder(BorderFactory.createEmptyBorder());
    }
    return jButton;
}

}

你运行这个看看怎么样?

这个是用图片的
package sample;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Frame extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;
private JPanel jPanel = null;

/**
 * This is the default constructor
 */
public Frame() {
    super();
    initialize();
}

/**
 * This method initializes this
 * 
 * @return void
 */
private void initialize() {
    this.setSize(513, 309);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
}

/**
 * This method initializes jContentPane
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
    if (jContentPane == null) {
        jContentPane = new JPanel();
        jContentPane.setLayout(null);

        jContentPane.add(getJPanel(), null);
    }
    return jContentPane;
}

/**
 * This method initializes jButton
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton() {
    if (jButton == null) {
        jButton = new JButton();
        jButton.setBounds(new Rectangle(34, 27, 150, 44));
        jButton.setText("愛我老婆");
        jButton.setBorder(null);
                        //下面这句设置背景颜色必须要否则无法实现背景透明
        jButton.setBackground(Color.BLACK);
        jButton.setOpaque(false);
        jButton.setForeground(Color.red);
        jButton.setFont(new Font("",Font.BOLD,24));
    }
    return jButton;
}

class getpane extends JPanel {
    private static final long serialVersionUID = 1L;
    int width = 0, hight = 0;
    String imgpath = "";

    public getpane(int width, int hight, String imgpath) {
        this.width = width;
        this.hight = hight;
        this.imgpath = imgpath;
        this.setOpaque(true);
    }

    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        ImageIcon icon = new ImageIcon(imgpath);
        Image img = icon.getImage();
        g.drawImage(img, 0, 0, width, hight, this);
    }
}

/**
 * This method initializes jPanel
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJPanel() {
    if (jPanel == null) {
    String imgpath = "src/game/image/good02.jpg";
    jPanel = new getpane(this.getWidth(), this.getHeight(), imgpath);
        // jPanel = new JPanel();
    jPanel.setLayout(null);
    jPanel.setBounds(new Rectangle(13, 8, 472, 251));
    jPanel.add(getJButton(), null);
    }
    return jPanel;
}

}

[quote="yqklw521"]package com.test;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.BorderFactory;
import javax.swing.border.TitledBorder;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import java.awt.Rectangle;

public class Test2 extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;

/**
 * This is the default constructor
 */
public Test2() {
    super();
    initialize();
}

/**
 * This method initializes this
 * 
 * @return void
 */
private void initialize() {
    this.setSize(300, 200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
}

/**
 * This method initializes jContentPane
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
    if (jContentPane == null) {
        jContentPane = new JPanel();
        jContentPane.setLayout(null);
        jContentPane.setBackground(new Color(102, 255, 102));
        jContentPane.add(getJButton(), null);
    }
    return jContentPane;
}

/**
 * This method initializes jButton
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton() {
    if (jButton == null) {
        jButton = new JButton();
        jButton.setBounds(new Rectangle(98, 29, 124, 35));
        jButton.setText("aaaaaa");
        jButton.setBackground(new Color(102, 0, 204));
        jButton.setFont(new Font("Dialog", Font.BOLD, 24));
        // jButton.setForeground(new Color(255, 51, 0));
        jButton.setOpaque(false);
        jButton.setBorder(BorderFactory.createEmptyBorder());
    }
    return jButton;
}

}

你运行这个看看怎么样?[/quote]

连题目都不看清。

你傻啦,你把那控件改成awt的控件不就是一樣的嗎?好心沒好報,笨到家了。

单控件透明,还是控件的parent设置为透明?
单控件透明的话需要自行定制

不是不想给demo,这个东西要完善的实现确实很复杂,而且低效.我建议你可以用Label代替button,通过设置父容器setBackgroundMode(SWT.INHERIT_DEFAULT);就可透明显示label.然后你给label增加一个PaintListern,自己使用GC绘制一个正方框表示button的轮廓.或者你做一个只有边框,中间透明的png图片.设置给Label,也可以.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
swt的标签如何设置透明?
rt
java设置透明按钮
ImageIcon icon=new ImageIcon("a.png"); JButton button = new JButton("我是按钮",icon); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 点击后变为红色 butto...
swt ui 之按钮Button事件
本课程主要讲解eclipse plugin开发的swt开发,包括的内容有swt的ui组件的使用,例如Button、Text组件的使用
使用SWT 按钮 Button 问题
使用Button 怎么将一个button 这么显示 硬件检查 显示成下面这种rnrn硬rn件rn检rn查rnrn也就是横向 变成竖向 哪位高手知道啊 ?帮帮忙rn在线等
透明Button 透明Button
透明Button 透明Button 透明Button 透明Button 透明Button 透明Button
Java 透明按钮 Java透明按钮
Java实现的透明按钮效果,本例子里面还有一张图片,最终实现效果是按钮透明,但图片不覆盖按钮。很适合喜欢界面设计的朋友!~
SWT如何设置text文本框的光标位置?
我用text的append方法向里面添加字符串后,光标总是显示在最顶行文本开始处,如何让光标自动定位在最后一行啊?
text框只读属性的设置?
想给text框设置只读属性。但是,readonly在netscape4.73中不支持,请问有什么方法可以解决?
如何设置BUTTON按钮的形态
若要使BUTTON按钮按下去放开鼠标后,这个按钮一直处于按下去的状态,知道再拿鼠标点击后才能弹回原状,该如何设置?rn
透明EDIT和PNG的BUTTON按钮
透明EDIT和PNG的BUTTON按钮
实现透明按钮的Button类
自绘制按钮,可实现在按钮上显示透明位图。从MFC的CButton类派生。
如何通过按钮来增加Text框?
如题
button按钮的 alt 框的显示。
我想让鼠标移动到按钮上时显示一个alt框,但是alt属性只有img标签才有。rn请问怎样才能在按钮上显示alt框呢。如果用onmouseover()事件怎样做。rnrn谢谢。rn
设置透明按钮?
[code=C/C++]rnHBRUSH CLogin1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)rnrn HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);rnrn // TODO: 在此更改 DC 的任何属性rn rn if (pWnd->GetDlgCtrlID() == IDC_BUTTON2) //IDC_BUTTON2按钮IDrn rn //pDC->SetTextColor(RGB(255,255,255)); rn //pDC->SetBkColor(RGB(255,0,0));rn pDC->SetBkMode(TRANSPARENT);rn rnrn // TODO: 如果默认的不是所需画笔,则返回另一个画笔rn return hbr;rn[/code]rnrn//////////////////////////////rn为什么按钮不是透明的呢
Android 设置透明按钮
修改配置文件 <Button android:id="@+id/btnAppMore" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="详细信息>>" android:layout_alignParentRight="
按钮透明设置
请教在一个窗体中,如何设置按钮为透明的?
android按钮透明设置
设置安卓按钮透明,且去除阴影的方式。<Button android:id="@+id/game_start" android:layout_width="130dp" android:layout_height="60dp" android:layout_marginTop="102dp" android:layout_marginLeft="80dp" ..
swt给button加图片怎么能让button透明
swt给button加图片怎么能让button透明,图片总是不能全部覆盖button
SWT开发中,如何设置组件背景是透明的?
在SWT开发中,由于用到了背景图等原故,所以我想某些组件背景是透明的.各位有什么办法吗?rnrn比如 shell透明的,composite透明的,或button,或Label是透明的背景.rnrn有劳各位.
WPF中设置button边框为透明
实现最终效果是按钮初始化时有个图片当做背景,被点击时候图片的背景换个背景。rn实际中是拿图片党背景老是有个白色边框,我尝试设置了BorderBrush 属性为null都不行。看别人都是自己重新写了个button style 可以实现背景为透明 可是我却无法用code 设置按钮点击时候变换背景了。 求高手指点 我做C# WPF 是个新手。是否的是将button 的style 写的还是有问题。 还有如何将style 写才资源文件 其他按钮也能调用。
Java SWT Lable框中显示图片验证码
public static String testcode="";//验证码,保存验证码,取这个值于用户输入的值作比较 public static void image(Label label) throws IOException{ //BufferedImage 的构造函数可以设置图片的大小 BufferedImage image = new BufferedImage(l...
关于text透明设置,谁会?
怎么设置text的背景为透明 ?
swt 按钮事件中设置鼠标形状
((Button)e.getSource()).setCursor(new Cursor(null,SWT.CURSOR_WAIT));
如何制作透明的BUTTON
我想做一个透明的BUTTON,只有一个四方框,方框内为父窗口的背景,如何制作,使用WS_EX_TRANSPARENT的话,好像就只是不擦除背影而已,但是当移动窗口的时候,背景并不重画的。
如何设置button的text属性为"&"
Button1.Text = "&" 显示的结果为空。rn不知道是不是需要转义字符之类的?rn
Button按钮圆角的设置:
shape.xml xmlversion="1.0"encoding="UTF-8"?> xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">                                                androi
如何往swt中添加透明的图片
或者有透明效果的按钮,请达人浮出水面!
input text框的高度如何设置?
请问如何设置文本输入框的高度?rn貌似不期作用rn先谢过了
swt怎样设置按钮的图片?
目前我是这样设置的,但是程序运行的时候效果非常不好,左面总是露出按钮原图rnbutton.setImage(new Image(display,"icons/name.gif"));
SWT中如何区分不同button的事件?
建立了个button数组,给里面的每个button都处理各自的事件。rn[code=Java]rnfor( int i = 0; i < 2; i++)rn buttons[i] = new Button(group, SWT.NONE);rn buttons[i].setText("OK");rnrn buttions[i].addSelectionListener(new SelectionAdapter() rn public void widgetSelected(SelectionEvent e)rn //TODO 如何能确认点击的是那个buttonrn rn rn rn ); rnrn[/code]rn本来想用e.getSource(),但返回的就是ButtonOK,无法区分。rn小弟初学,请各位指点!rn多谢!
如何根据下拉列表中的内容在设置text框中的值?
比如我有一个页面上有一个文本框a,一个下拉列表框brnrnb中存放着学号,从b中选择其中一个学号,a中就能显示出根据这个学号到后台数据库中去找到的学员名称rnrn这整个流程能给个源代码吗?rnrn没学过asp,老感觉有劲使不出啊
HTML中怎样设置TEXT框的FOCUS?
我做了一个网页,其中有一个INPUT TEXT输入框,我想让网页显示时,输入焦点在这个输入框上,让用户的键盘输入直接进入这个输入框,不需要先用鼠标点它一下.rn 我用了textid.focus()语句,好像FOCUS到输入框上去了,因为输入框的 onkeydown / onkeypress 消息能接受到,但是键盘输入的内容不能进入输入框的文本区.
SWT中button如何监听回车?
试了下,似乎除了enter其他键都能监听rnrn郁闷了。。。。。。。
java中如何设置各类组件透明
     失眠并不是一无是处,至少我认真完成了我的工作,而且还收获了很多。         对于一般的swing组件,设置透明就只用一句代码: nameOfComponent.setOpaque(false);          但这一句代码不是万能的 ,当遇到JButton、JScrollPane、JTable等等组件的时候,这一句代码是完全不够用的,下面来总结一下吧~    ...
在asp.net中如何构造带有Text的button按钮
我知道构造方法new Button() 如何构造带有Text的button按钮呢?请高手指教!
SWT text框中加入的回车监听,为何小键盘不起作用
我用SWT写的dialog,给text框加入回车监听,按回车键可以执行动作,但是按小键盘的回车键就没反应,难道它们不一样嘛?烦请高人指点下rn代码如下:rn KeyListener keyListener = new KeyListener()rn public void keyPressed(KeyEvent arg0)rn if (arg0.keyCode == SWT.CR)rn BusyIndicator.showWhile(dialogShell.getDisplay(),new Runnable()rn public void run() rn rn rn rn );rn rn public void keyReleased(KeyEvent arg0) rn rn ;rn textName.addKeyListener(keyListener);
swt中text的accessibility属性
swt中text的accessibility属性起什么作用,如何使用?
swt 中的Text布局问题
我想知道有什么方法可以给Text布局,有谁可以给我个swt的中文API我英文很烂。rnrn我贴出我写的代码rn[code=Java]rnimport org.eclipse.swt.SWT;rnimport org.eclipse.swt.graphics.Color;rnimport org.eclipse.swt.widgets.Display;rnimport org.eclipse.swt.widgets.Shell;rnimport org.eclipse.swt.widgets.Text;rnrnpublic class ChatServer rnrn /**rn * @param argsrn */rn public static void main(String[] args) rn // TODO Auto-generated method stubrn ChatDisplay cds = new ChatDisplay();rn cds.setChatLayout("和ssl聊天中...", "你好啊!");rnrn rnrnrnrnclass ChatDisplay rn private Display cds = new Display();rn private Shell shell = new Shell();rn rn public void setChatLayout(String s, String sText) rn shell.setLayout(null);rn Text rt = new Text(shell, SWT.MULTI);rn Text pt = new Text(shell, SWT.MULTI);rn shell.setText(s);rn shell.setSize(520, 480);rn Color color = new Color(Display.getCurrent(), 255, 0, 255);rn shell.setBackground(color);rn rt.setText(sText);rn rt.setEditable(false);rn rt.setSize(520, 300);rn pt.setSize(520, 120);rn pt.setText("OK");rn //t.pack();rn shell.open();rn rn while(!shell.isDisposed()) rn if(!cds.readAndDispatch()) rn cds.sleep();rn rn rn rn cds.dispose();rn rnrn[/code]rn我想把这两个Text排列一上一下。
按钮,button按钮,button按钮,button
按钮,button按钮,button按钮,button
Java,SWT,如何增加选项卡按钮的宽度?
增加宽度后,上面可以加些图片什么的,本人初学Java,望指教!
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法