扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
不是很明白,
新华网站建设公司创新互联,新华网站设计制作,有大型网站制作公司丰富经验。已为新华千余家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的新华做网站的公司定做!
类似于启动界面的么?
import javax.swing.*;
import java.awt.*;
import java.net.*;
public class JSplashWindow extends JWindow implements Runnable
{
Thread splashThread=null;
public JSplashWindow()
{
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//设置启动界面的光标样式
JPanel splash=new JPanel(new BorderLayout());
URL url=getClass().getResource("1.jpg");//获得指定资源文件的绝对路径。
if(url!=null)
{
splash.add(new JLabel(new ImageIcon(url)),BorderLayout.CENTER);
}
setContentPane(splash);
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕的大小
pack();
setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2);//使启动窗口居中显示
start();
}
public void start()
{
toFront();//window类的toFront()方法可以让启动界面显示的时候暂时在最前面,用window类的setAlwayOnTop(boolean)方法可以让窗口总保持在最前面。
splashThread=new Thread(this);
splashThread.start();
}
public void run()
{
try
{
setVisible(true);
Thread.sleep(50000);
}
catch(Exception e)
{
e.printStackTrace();
}
dispose();
}
static void showFrame(String title)
{
JFrame frame=new JFrame(title);
frame.setSize(400,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize=frame.getToolkit().getScreenSize();//获得屏幕的大小
Dimension frameSize=frame.getSize();
if(frameSize.heightscreenSize.height)
{
frameSize.height=screenSize.height;
}
if(frameSize.widthscreenSize.width)
{
frameSize.width=screenSize.width;
}
frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
frame.setVisible(true);
}
public static void main(String[] args)
{
showFrame("Demo splash window");
JSplashWindow splash=new JSplashWindow();
//splash.start();
}
}
/*getToolkit()方法是java.awt.window类的方法它可以得到一个Toolkit类。Toolkit对象的getScreenSize()方法可以得到屏幕的大小。
getScreenSize()方法返回一个 Dimension对象,它的width,height属性就是屏幕的宽和高。
Object getClass()方法是java.lang.Object类的方法它可以获得当前正在运行类的对象
URL getResource(String name)方法是java.lang.Class类的方法用此方法可以获得一个指定资源文件的绝对路径。*/
frame.show()这句后面缺一个";"
我在我电脑上运行了,图片可以显示出来
你应该是图片路径写错了
你可以用下面的代码测试下是不是路径写错了
System.out.println(new File("1.jpg").exists());
效果图如下
swing和awt写法差别不大,我使用的是swing的组件
参考代码和注释如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//本窗口继承自JFrame 实现了 ActionListener接口
public class JCBFrame extends JFrame implements ItemListener{
JComboBoxString jcb;
JLabel jlimg;
// 文字
String[] ss = {"樱桃","香蕉","西瓜"};
//文字对应图片位置
String[] icons = {"img/1.jpg","img/2.jpg","img/3.jpg"};
int init = 2;//初始选择的下标--西瓜
public JCBFrame() {
jcb = new JComboBoxString(ss);
jcb.setSelectedIndex(init);//初始选择的项目
jcb.addItemListener(this);//设置条目事件响应 ,比如选中某个条目的处理
add(jcb,BorderLayout.NORTH);
jlimg = new JLabel();
jlimg.setHorizontalAlignment(JLabel.CENTER);
add(jlimg);
showImg(init);//初始显示的图片
//窗口属性的设置
setTitle("测试窗口");//标题
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(260, 300);//大小
setLocationRelativeTo(null);//居中
}
//显示图片
private void showImg(int index) {
jlimg.setIcon( new ImageIcon(this.getClass().getResource(icons[index])));
}
//main方法
public static void main(String[] args) {
new JCBFrame().setVisible(true);//实例化并可见
}
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED) {//当选择某个条目时
showImg(jcb.getSelectedIndex());//显示的图片改变
}
}
}
其实有很多种方法可以解决图片显示大小的问题:
使用photoshop修改. 优点是可以节省系统资源, 显示图片的时候,不用做处理,缺点是需要了解ps的基本操作
使用JDialog 自定义对话框. 优点 可以实现复杂的效果, 缺点,代码量比较多
使用ImageIcon, Image 类 实现图片的缩放,. 优点: 纯java代码解决, 缺点: 如果大量的图片需要缩放, 那么可能影响程序的速度.
方案3的代码如下
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class Test {
public static void main(String[] args) {
ImageIcon icon = new ImageIcon("imgs/1.png"); // 得到icon对象 .注意我的图片地址和你的不一样,注意修改!!
Image image = icon.getImage(); //icon---Image
float scale = 0.5f; //缩放比例 50%
int width = Math.round(icon.getIconWidth()*scale); // 变小 50%的宽
int height= Math.round(icon.getIconHeight()*scale);// 变小50%的高
Image miniIcon = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
// image 变成指定大小. 缩放模式为 SCALE_SMOOTH(平滑优先)
ImageIcon smallIcon = new ImageIcon(miniIcon);// Image---icon
JOptionPane.showInputDialog(null, "吃了吗?", "标题", 0, smallIcon, null, "默认值");
}
}
效果图
图1 图片显示比例为原图的50%
图2 图片显示比例为原图的120%
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流