请教java中setUI()的用法! 如题!我想在控件上加图片,但是用setIcon()方法之后图不能居中,而且不能覆盖到整个图片,有人建议我用setUI()方法,但是我不懂怎么用,请大家指教,最好给段代码实例,不胜感激! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【HoneyChenyu】截止到2008-06-24 11:45:24的历史汇总数据(不包括此帖):发帖数:3 发帖分:110 结贴数:2 结贴分:60 未结数:1 未结分:50 结贴率:66.67 % 结分率:54.55 % 楼主加油 import java.awt.Graphics;import java.awt.Image;import java.awt.Insets;import java.awt.image.BufferedImage;import javax.imageio.ImageIO;import javax.swing.*;import javax.swing.plaf.MenuItemUI;import javax.swing.plaf.basic.BasicPopupMenuUI;public class BackgroundImgMenu extends JMenu{ private Image bgImg; public BackgroundImgMenu(String text, Image bgImg) { super(text); this.bgImg = bgImg; } @Override public void updateUI() { setUI((MenuItemUI) UIManager.getUI(this)); if (getPopupMenu() != null) { getPopupMenu().setUI(new PopupMenuUI()); } } @Override public JMenuItem add(JMenuItem menuItem) { menuItem.setOpaque(false); return super.add(menuItem); } private class PopupMenuUI extends BasicPopupMenuUI { @Override public void paint(Graphics g, JComponent c) { super.paint(g, c); Insets insets = c.getInsets(); g.drawImage(bgImg, insets.left, insets.top, c.getWidth() - insets.left - insets.right, c.getHeight() - insets.top - insets.bottom, c); } } public static void main(String[] args) throws Exception { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); BufferedImage img = ImageIO.read(BackgroundImgMenu.class.getResource("menubg.png")); JMenuBar menubar = new JMenuBar(); JMenu fileMenu = new BackgroundImgMenu("File", img); JMenu editMenu = new BackgroundImgMenu("Edit", img); JMenu editSubMenu = new BackgroundImgMenu("SubMenu", img); editSubMenu.add(new JMenuItem("SubMenuItem-1")); editSubMenu.add(new JMenuItem("SubMenuItem-2")); editSubMenu.add(new JMenuItem("SubMenuItem-3")); fileMenu.add(new JMenuItem("Open")); fileMenu.add(new JMenuItem("Save")); fileMenu.add(new JCheckBoxMenuItem("CheckboxMenuItem")); fileMenu.add(new JRadioButtonMenuItem("RadioButtonMenuItem")); fileMenu.addSeparator(); fileMenu.add(new JMenuItem("Exit")); editMenu.add(new JMenuItem("Copy")); editMenu.add(new JMenuItem("Paste")); editMenu.add(new JMenuItem("Cut")); editMenu.add(editSubMenu); menubar.add(fileMenu); menubar.add(editMenu); JFrame f = new JFrame("带背景图片的菜单"); f.setJMenuBar(menubar); f.setSize(400, 400); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }} import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.UIManager;import com.sun.java.swing.plaf.windows.WindowsButtonUI;public class TestLookAndFeel extends JFrame { private TestButton lookAndFeelButton; public TestLookAndFeel() { this.initParam(); JPanel contentPanel = new JPanel(); contentPanel.add(this.lookAndFeelButton); this.getContentPane().add(contentPanel); } private void initParam() { this.lookAndFeelButton = new TestButton("lookAndFeelButton"); this.lookAndFeelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UIManager.getDefaults().put("ButtonUI", "ButtonUI2"); TestLookAndFeel.this.lookAndFeelButton.setChangeUI(true); TestLookAndFeel.this.lookAndFeelButton.updateUI(); } }); } /** * @param args */ public static void main(String[] args) { TestLookAndFeel test = new TestLookAndFeel(); test.setVisible(true); test.setSize(200, 200); test.setDefaultCloseOperation(EXIT_ON_CLOSE); } class TestButton extends JButton { private boolean changeUI = false; public TestButton(String string) { super(string); } public String getUIClassID() { if (this.changeUI) { this.changeUI = false; return UIManager.getDefaults().getString("ButtonUI"); } return super.getUIClassID(); } @Override public void updateUI() { if ("ButtonUI2".equals(getUIClassID())) { this.setUI(new WindowsButtonUI()); } else { super.updateUI(); } } public void setChangeUI(boolean changeUI) { this.changeUI = changeUI; } }} 使用mina做TCP数据转发器的问题 一道java算法编程题 有关文件名称过滤器对象的问题???????????????? 跪求关于java .swing中的打印的代码 用java向一个WEB发送psot请求 applet错误 Java Applet 简单问题,在线等候中.... 我非常想学习java!!!!!!!!!! 这个在java里怎么实现 小白求助 关于加载第三方JAR的问题 读取excel表格问题,得到的值为null,这是什么原因?
楼主【HoneyChenyu】截止到2008-06-24 11:45:24的历史汇总数据(不包括此帖):
发帖数:3 发帖分:110
结贴数:2 结贴分:60
未结数:1 未结分:50
结贴率:66.67 % 结分率:54.55 %
楼主加油
import java.awt.Image;
import java.awt.Insets;
import java.awt.image.BufferedImage;import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.plaf.MenuItemUI;
import javax.swing.plaf.basic.BasicPopupMenuUI;public class BackgroundImgMenu extends JMenu
{
private Image bgImg; public BackgroundImgMenu(String text, Image bgImg)
{
super(text);
this.bgImg = bgImg;
} @Override
public void updateUI()
{
setUI((MenuItemUI) UIManager.getUI(this)); if (getPopupMenu() != null)
{
getPopupMenu().setUI(new PopupMenuUI());
}
} @Override
public JMenuItem add(JMenuItem menuItem)
{
menuItem.setOpaque(false);
return super.add(menuItem);
} private class PopupMenuUI extends BasicPopupMenuUI
{
@Override
public void paint(Graphics g, JComponent c)
{
super.paint(g, c);
Insets insets = c.getInsets(); g.drawImage(bgImg, insets.left, insets.top, c.getWidth() - insets.left - insets.right,
c.getHeight() - insets.top - insets.bottom, c);
}
} public static void main(String[] args) throws Exception
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); BufferedImage img = ImageIO.read(BackgroundImgMenu.class.getResource("menubg.png")); JMenuBar menubar = new JMenuBar();
JMenu fileMenu = new BackgroundImgMenu("File", img);
JMenu editMenu = new BackgroundImgMenu("Edit", img);
JMenu editSubMenu = new BackgroundImgMenu("SubMenu", img); editSubMenu.add(new JMenuItem("SubMenuItem-1"));
editSubMenu.add(new JMenuItem("SubMenuItem-2"));
editSubMenu.add(new JMenuItem("SubMenuItem-3")); fileMenu.add(new JMenuItem("Open"));
fileMenu.add(new JMenuItem("Save"));
fileMenu.add(new JCheckBoxMenuItem("CheckboxMenuItem"));
fileMenu.add(new JRadioButtonMenuItem("RadioButtonMenuItem"));
fileMenu.addSeparator();
fileMenu.add(new JMenuItem("Exit")); editMenu.add(new JMenuItem("Copy"));
editMenu.add(new JMenuItem("Paste"));
editMenu.add(new JMenuItem("Cut"));
editMenu.add(editSubMenu); menubar.add(fileMenu);
menubar.add(editMenu); JFrame f = new JFrame("带背景图片的菜单");
f.setJMenuBar(menubar);
f.setSize(400, 400);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;import com.sun.java.swing.plaf.windows.WindowsButtonUI;public class TestLookAndFeel extends JFrame { private TestButton lookAndFeelButton; public TestLookAndFeel() {
this.initParam();
JPanel contentPanel = new JPanel();
contentPanel.add(this.lookAndFeelButton);
this.getContentPane().add(contentPanel);
} private void initParam() {
this.lookAndFeelButton = new TestButton("lookAndFeelButton");
this.lookAndFeelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
UIManager.getDefaults().put("ButtonUI", "ButtonUI2");
TestLookAndFeel.this.lookAndFeelButton.setChangeUI(true);
TestLookAndFeel.this.lookAndFeelButton.updateUI();
}
});
} /**
* @param args
*/
public static void main(String[] args) {
TestLookAndFeel test = new TestLookAndFeel();
test.setVisible(true);
test.setSize(200, 200);
test.setDefaultCloseOperation(EXIT_ON_CLOSE);
} class TestButton extends JButton {
private boolean changeUI = false; public TestButton(String string) {
super(string);
} public String getUIClassID() {
if (this.changeUI) {
this.changeUI = false;
return UIManager.getDefaults().getString("ButtonUI");
}
return super.getUIClassID();
} @Override
public void updateUI() {
if ("ButtonUI2".equals(getUIClassID())) {
this.setUI(new WindowsButtonUI());
} else {
super.updateUI();
}
} public void setChangeUI(boolean changeUI) {
this.changeUI = changeUI;
}
}
}