setIcon
public void setIcon(Icon icon)
定义此组件将要显示的图标。如果 icon 值为 null,则什么也不显示。
此属性的默认值为 null。
这是一个 JavaBeans 绑定属性。
另请参见:
setVerticalTextPosition(int), setHorizontalTextPosition(int), getIcon()
你的在什么地方?可能是你的路径有问题,getImage(URL url, String name)。如果是指定硬盘里的东西,则url应该为文件所在盘的路径,
eg:file:///E:/Materials/, name则是需要显示的文件名topjpg,
则getImage(new javanetURL("file:///E:/Materials/"), "topjpg");
import javaawtGraphics;
import javaawtImage;
import javaxswingImageIcon;
import javaxswingJPanel;
public class PictureJPanel extends JPanel{
private ImageIcon icon;
private Image image;
public PictureJPanel() {
icon = new ImageIcon(getClass()getResource("/backgroundjpg"));
image = icongetImage();
}
public void paintComponent(Graphics g) {
superpaintComponent(g);
//下面这行是为了背景可以跟随窗口自行调整大小,可以自己设置成固定大小
gdrawImage(image, 0, 0,thisgetWidth(), thisgetHeight(), this);
}
}
你可以自己新建一个绘制的面板
URL对象中前而几个方法都非常容易理解,而该对象提供的openStream()可以读取该 URL资源的InputStream,通过该方法可以非常方便地读取远程资源。
下面的程序示范如何通过URL类读取远程资源:
1)只显示网络
1)只显示网络
引用处理的java类:
package dujunkingurlgetimage;
import javaioInputStream;
import javanetURL;
import androidappActivity;
import androidgraphicsBitmap;
import androidgraphicsBitmapFactory;
import androidosBundle;
import androidosHandler;
import androidosMessage;
import androidviewMenu;
import androidviewMenuItem;
import androidwidgetImageView;
public class MainActivity extends Activity {
Bitmap bitmap;
ImageView imageview;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if (msgwhat==0x9527) {
//显示从网上下载的
imageviewsetImageBitmap(bitmap);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_main);
imageview=(ImageView)findViewById(RidimageView1);
//创建并启动一个新线程用于从网络上下载
new Thread(){
@Override
public void run() {
try {
//创建一个url对象
URL url=new URL(">
//打开URL对应的资源输入流
InputStream is= urlopenStream();
//从InputStream流中解析出
bitmap = BitmapFactorydecodeStream(is);
// imageviewsetImageBitmap(bitmap);
//发送消息,通知UI组件显示
handlersendEmptyMessage(0x9527);
//关闭输入流
isclose();
} catch (Exception e) {
eprintStackTrace();
}
}
}start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present
getMenuInflater()inflate(Rmenumain, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifestxml
int id = itemgetItemId();
if (id == Ridaction_settings) {
return true;
}
return superonOptionsItemSelected(item);
}
}
那你要在控件所在的面板中插入这张当背景:
public void paint(Graphics g) {
gdrawImage(IMAGE_BG, 0, 0, this);
superpaint(g);
}
1首先一个小错误,这些代码(包括你建立第一个JFrame的代码)最好都放到Swing的线程去,不然可能会偶尔发生意外错误。就是这样:SwingUtilitiesinvokeLater(new Runnable() {@Override public void run() {在这里写的代码会在Swing线程又叫做EDT里执行} });
2Swing里可以用LayoutManager,个人感觉比你一个一个手动设置Bound方便和灵活。
3然后,一般改成:frsetDefaultCloseOperation(JFrameDISPOSE_ON_CLOSE)而不是exit,exit比较粗鲁会终止整个程序,dispose只是终止窗口并在所有窗口都结束而且主线程也结束才终止程序。
4getClass()getResource一般用在做成JAR之后,从同一个JAR里取数据,可以用比较简单的ToolkitgetDefaultToolkit()getImage()
5你已经知道JLabel可以附带了。如果你要的效果是之上显示东西,这里你心里有了“层”的概念,而这个概念在Swing里的一个实现是JLayeredPane,去学习这个容器吧。给你个大概的例子:
JLayeredPane layers = new JLayeredPane();//创建JPanel paneBackground = new JPanel(new BorderLayout());//背景层
paneBackgroundadd(new JLabel(ToolkitgetDefaultToolkit()getImage("C:/1jpg")), BorderLayoutCENTER);//加入背景,BorderLayoutCENTER单独使用表示填满。
JPanel paneDetails = new JPanel(new FlowLayout());//这层你往里面加东西,就在背景上面了。
paneDetailsadd(new JButton("ABC"));//加个按钮试试。
layersadd(paneBackground);layersadd(paneDetails);//把层按照从背后向前的顺序加进去。
fradd(layers, BorderLayoutCENTER);//把layers加进frame里面去,填满。
纯手写代码笔误难免哦~
以上就是关于java程序设计出来的图形用户界面上标题栏上怎样添加图片呢全部的内容,包括:java程序设计出来的图形用户界面上标题栏上怎样添加图片呢、关于java小程序插图片、JAVA窗口化程序如何在窗体加入图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)