java 如何获取本地图片的宽度and高度

java 如何获取本地图片的宽度and高度,第1张

File image=new File("D:/0jpg");

try {

BufferedImage localImg = ImageIOread(new FileInputStream(image));

int width=localImggetWidth();

int height=localImggetHeight();

Systemoutprintln("width:"+width);

Systemoutprintln("height:"+height);

}catch (Exception e){

eprintStackTrace();

}

String imageUrl=">

public void setExtendedState(int state)设置此 frame 的状态。该状态表示为逐位掩码。

参数:

state - frame 状态常量的逐位掩码,可能取值:

NORMAL 指示不设置状态位。

ICONIFIED 此状态位指示将 frame 图标化(即最小化)

MAXIMIZED_HORIZ 水平方向最大化

MAXIMIZED_VERT 垂直方向最大化

MAXIMIZED_BOTH 完全最大化(水平和垂直方向)。

注意,如果该状态在给定平台上不受支持,则什么也不会发生。应用程序可以通过 javaawtToolkit#isFrameStateSupported(int state) 方法确定特定的状态是否可用。

-----------------------------

setSize( 1280,80 );

setExtendedState(MAXIMIZED_HORIZ);

应该就可以了

楼主是想让控件随frame大小变化

首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为null(不要布局器);

第二,在组件盘内点选Swing Container页签,选取Jpanel图标,在this上方拖拽一块区域,同样的方法在下方也拖拽一块区域,为了方便区分,将上方的Jpanel1区域设置为红色,下方的Jpanel2区域设置为橙色。将Jpanel1和Jpanel2的layout设置为null(不要布局器)。

第三,在Jpanel中放入一个Jlable标题栏,JTextField1文本框和Jbutton按钮,在组件盘内点选Swing 页签,选取JLable图标在Jpanel1的左边画一个标题栏,将text改为“请输入查询条件”,再选取JtextField在Jpanel1的中间画一个文本框,将text改为空,最后选取Jbutton在Jpanel1又边画一个按钮将text改为“查询”。在Jpanel2中画三个Jbutton按钮,将text分别设为“增加”、“删除”、“修改”。

第四,在this的中间建一个表格用来显示数据库数据的内容,在Swing Container页签,选取jScrollPane图标,在this的中间拖拽一个大的区域,接着在组件盘内点选Swing 页签,选取JTable图标,将Jtable加入到jScrollPane中。

这样我的界面就做好了,但这个界面不能随窗口自动调整大小。下面编程实现手动布局,使各区域能随窗口自动调整大小。

先用鼠标选中this窗体,再选择右边的事件Events中的componentResized,双击鼠标就进到void this_componentResized(ComponentEvent e) {}中,在{}中写入下列代码:

//设置jPanel1的起点坐标

jPanel1setLocation(0,0);

//设置jPanel1的高度宽度

jPanel1setSize(thisgetWidth(),jPanel1getHeight());

//设置jPanel2的起点坐标(37是标题栏的高度)

jPanel2setLocation(0,thisgetHeight()-jPanel2getHeight()-37);

//设置jPanel1的高度和宽度

jPanel2setSize(thisgetWidth(),jPanel2getHeight());

//设置jScrollPanel的起点坐标

jScrollPane1setLocation(0,jPanel1getHeight());

//设置jScrollPanel的高度和宽度

jScrollPane1setSize(thisgetWidth(),jPanel2getY()-jPanel1getHeight());

本程序只调整了Jpanel1、Jpanel2和JScrollPane1随窗口变化,同样的方法,可以使按钮、文本框等一起随窗口变化。

程序在“查询”按钮事件中模拟从数据库中取数据,并显示在表格中。为了简洁,程序没有对输入条件、增加、删除、修改等进行处理。

程序源代码:

package src

import javaxswing;

import javaawt;

import javaawtevent;

import javautilVector;

import javaxswingtableDefaultTableModel;

public class Frame1 extends JFrame {

JPanel jPanel1 = new JPanel();

JPanel jPanel2 = new JPanel();

JScrollPane jScrollPane1 = new JScrollPane();

JTable jTable1 = new JTable();

JLabel jLabel1 = new JLabel();

JTextField jTextField1 = new JTextField();

JButton jButton1 = new JButton();

JButton jButton2 = new JButton();

JButton jButton3 = new JButton();

JButton jButton4 = new JButton();

public Frame1() {

try {

jbInit();

}

catch(Exception e) {

eprintStackTrace();

}

}

public static void main(String[] args) {

Frame1 frame1 = new Frame1();

//定义显示窗体的大小显示窗口

frame1setSize(400, 350);

frame1show();

//激活“查询”按钮事件

frame1jButton1doClick();

}

private void jbInit() throws Exception {

thisgetContentPane()setLayout(null);

jPanel1setBackground(Colorred);

jPanel1setBounds(new Rectangle(43, 15, 297, 48));

jPanel1setLayout(null);

jPanel2setBounds(new Rectangle(50, 232, 297, 48));

jPanel2setLayout(null);

jPanel2setBackground(Colororange);

jScrollPane1getViewport()setBackground(Colorpink);

jScrollPane1setBounds(new Rectangle(53, 74, 287, 138));

jLabel1setFont(new javaawtFont("Dialog", 0, 15));

jLabel1setText("输入查内容");

jLabel1setBounds(new Rectangle(44, 12, 80, 27));

jTextField1setText("");

jTextField1setBounds(new Rectangle(125, 14, 70, 22));

jButton1setBounds(new Rectangle(221, 12, 61, 24));

jButton1setFont(new javaawtFont("Dialog", 0, 13));

jButton1setText("查询");

jButton1addActionListener(new Frame1_jButton1_actionAdapter(this));

jButton2setBounds(new Rectangle(13, 14, 66, 27));

jButton2setFont(new javaawtFont("Dialog", 0, 13));

jButton2setText("增加");

jButton3setText("删除");

jButton3setBounds(new Rectangle(115, 14, 66, 27));

jButton3setFont(new javaawtFont("Dialog", 0, 13));

jButton4setText("修改");

jButton4setBounds(new Rectangle(217, 14, 66, 27));

jButton4setFont(new javaawtFont("Dialog", 0, 13));

thisaddHierarchyBoundsListener(new Frame1_this_hierarchyBoundsAdapter(this));

thisaddComponentListener(new Frame1_this_componentAdapter(this));

thisgetContentPane()add(jPanel1, null);

jPanel1add(jTextField1, null);

jPanel1add(jButton1, null);

jPanel1add(jLabel1, null);

thisgetContentPane()add(jPanel2, null);

jPanel2add(jButton3, null);

jPanel2add(jButton4, null);

jPanel2add(jButton2, null);

thisgetContentPane()add(jScrollPane1, null);

jScrollPane1getViewport()add(jTable1, null);

}

void this_componentResized(ComponentEvent e) {

//设置jPanel1的起点坐标

jPanel1setLocation(0,0);

//设置jPanel1的高度和宽度

jPanel1setSize(thisgetWidth(),jPanel1getHeight());

//设置jPanel2的起点坐标(37是标题栏的高度)

jPanel2setLocation(0,thisgetHeight()-jPanel2getHeight()-37);

//设置jPanel2的高度和宽度

jPanel2setSize(thisgetWidth(),jPanel2getHeight());

//设置jScrollPanel的起点坐标

jScrollPane1setLocation(0,jPanel1getHeight());

//设置jScrollPanel的高度和宽度

jScrollPane1setSize(thisgetWidth(),jPanel2getY()-jPanel1getHeight());

}

void jButton1_actionPerformed(ActionEvent e) {

// “查询”按钮事件,模拟从数据库中取数据并显示在表格中

try

{

Vector vcol = new Vector(); //列名

Vector vrow = new Vector(); //内容

//用一个for循环来模拟数据库的内容

for (int col=1;col<31;col++) {

vcoladdElement("列"+col);

}

for (int row=1;row<101;row++) {

Vector vr1 = new Vector();

for (int col=1;col<31;col++) {

vr1addElement(row+"/"+col);

}

vrowaddElement(vr1);

}

DefaultTableModel dtm=new DefaultTableModel(vrow,vcol);

jTable1 = new JTable(vrow,vcol);

//滚动条设置左右滚

jTable1setAutoResizeMode(JTableAUTO_RESIZE_OFF);

//在滚动条中放入表

thisjScrollPane1getViewport()add(jTable1, null);

}

catch(Exception ex)

{

Systemoutprintln("错误:" + ex);

}

}

}

class Frame1_this_hierarchyBoundsAdapter extends javaawteventHierarchyBoundsAdapter {

Frame1 adaptee;

Frame1_this_hierarchyBoundsAdapter(Frame1 adaptee) {

thisadaptee = adaptee;

}

public void ancestorResized(HierarchyEvent e) {

}

}

class Frame1_this_componentAdapter extends javaawteventComponentAdapter {

Frame1 adaptee;

Frame1_this_componentAdapter(Frame1 adaptee) {

thisadaptee = adaptee;

}

public void componentResized(ComponentEvent e) {

adapteethis_componentResized(e);

}

}

class Frame1_jButton1_actionAdapter implements javaawteventActionListener {

Frame1 adaptee;

Frame1_jButton1_actionAdapter(Frame1 adaptee) {

thisadaptee = adaptee;

}

public void actionPerformed(ActionEvent e) {

adapteejButton1_actionPerformed(e);

}

}

先把取出来,然后看下面,最好在存数据库的时候就把宽高保存下来

import javaawtimageBufferedImage;

import javaioFile;

import javaioFileInputStream;

import javaioFileNotFoundException;

import javaioIOException;

import javaximageioImageIO;

public class CalPit {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        File picture = new File("C:/Users/Administrator/Pictures/我的/neusoftpng");

        BufferedImage sourceImg =ImageIOread(new FileInputStream(picture)); 

        Systemoutprintln(Stringformat("%1f",picturelength()/10240));

        Systemoutprintln(sourceImggetWidth());

        Systemoutprintln(sourceImggetHeight());

    }

}

图像的高度和宽度只有在图像被完全加载后才是有效的 ,你虽然已经把显示在frame上,可是你绝对是在没有完全加载时打印的!

/

Determines the width of the image If the width is not yet known,

this method returns <code>-1</code> and the specified

<code>ImageObserver</code> object is notified later

@param observer an object waiting for the image to be loaded

@return the width of this image, or <code>-1</code>

if the width is not yet known

@see javaawtImage#getHeight

@see javaawtimageImageObserver

/

public abstract int getWidth(ImageObserver observer);

你还是这样写吧,可以获取的:

URLClassLoader urlLoader = (URLClassLoader) TestImageclass

getClassLoader();

URL fileLoc = urlLoaderfindResource("images/gopng");

BufferedImage bi = javaximageioImageIOread(fileLoc);

Systemoutprintln(bigetWidth());//150

如果要改高宽的话,请查找:

documentwrite("<img src='"+imgsrc+"'> ");

把他改成:

documentwrite("<img src='"+imgsrc+"' width='55' height='55'> ");

里面的 width='55' height='55' 就是高宽了 55数字你自己设,

File file = new File("文件路径");

FileInputStream fis = new FileInputStream(file);

BufferedImage bufferedImg = ImageIOread(fis);

int imgWidth = bufferedImggetWidth();

int imgHeight = bufferedImggetHeight();

以上就是关于java 如何获取本地图片的宽度and高度全部的内容,包括:java 如何获取本地图片的宽度and高度、Java 根据url获取图片高和宽、Java Frame如何设置宽度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9606916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存