添加窗口open監(jiān)聽(tīng),getContentPane().getSize()可以獲取當(dāng)前真實(shí)內(nèi)部大小,用JFrame的高度-getContentPane().getSize().height = 標(biāo)題高度,設(shè)置JFrame高度為想要的內(nèi)部高度+標(biāo)題高度
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、網(wǎng)頁(yè)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、紅安網(wǎng)站維護(hù)、網(wǎng)站推廣。
addWindowListener(new?WindowAdapter()?{
public?void?windowOpened(WindowEvent?ev)?{
int?realH?=?getContentPane().getSize().height;
int?titleH?=?dh?-?realH;
setBounds((screenSize.width?-?dw)?/?2,?(screenSize.height?-?dh)?/?2,?dw,?dh+titleH);
}
});
如果你指的是文字寫(xiě)入圖片時(shí)的寬度的話,是可以獲取的到的。
高度等于字體大小,即size。
寬度可以通過(guò)FontMetrics接口可以獲取的到。
參考代碼如下:
// 創(chuàng)建圖片對(duì)象
BufferedImage bImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
//得到Graphics2D 對(duì)象
Graphics2D g2d = (Graphics2D) bimg.getGraphics();
// 設(shè)置字體
Font font = new Font("宋體", Font.BOLD, 30);
g2d.setFont(font);
FontMetrics fm = g2d.getFontMetrics(font);
// 獲取文字寬度
int textWidth = fm.stringWidth(text);
如一定義二維數(shù)組array[][],則獲得該數(shù)組的長(zhǎng)度(即行數(shù))的代碼為array.length,對(duì)于每一行的寬度可以循環(huán)獲得,如獲得第i行的寬度(i的范圍是0~array.length-1)的代碼為array[i].length。
其他維數(shù)組獲得長(zhǎng)度信息依次類(lèi)推。
不會(huì)壓縮,會(huì)顯示不全的。。。
你用了setBounds() ,最好用跟圖片一樣大的高度,寬度, 不然的話就壓縮一下吧。。。
樓主是想讓控件隨frame大小變化
首先,建一個(gè)frame文件(Application應(yīng)用程序),在Design中將this中的layout設(shè)置為null(不要布局器);
第二,在組件盤(pán)內(nèi)點(diǎn)選Swing Container頁(yè)簽,選取Jpanel圖標(biāo),在this上方拖拽一塊區(qū)域,同樣的方法在下方也拖拽一塊區(qū)域,為了方便區(qū)分,將上方的Jpanel1區(qū)域設(shè)置為紅色,下方的Jpanel2區(qū)域設(shè)置為橙色。將Jpanel1和Jpanel2的layout設(shè)置為null(不要布局器)。
第三,在Jpanel中放入一個(gè)Jlable標(biāo)題欄,JTextField1文本框和Jbutton按鈕,在組件盤(pán)內(nèi)點(diǎn)選Swing 頁(yè)簽,選取JLable圖標(biāo)在Jpanel1的左邊畫(huà)一個(gè)標(biāo)題欄,將text改為“請(qǐng)輸入查詢條件”,再選取JtextField在Jpanel1的中間畫(huà)一個(gè)文本框,將text改為空,最后選取Jbutton在Jpanel1又邊畫(huà)一個(gè)按鈕將text改為“查詢”。在Jpanel2中畫(huà)三個(gè)Jbutton按鈕,將text分別設(shè)為“增加”、“刪除”、“修改”。
第四,在this的中間建一個(gè)表格用來(lái)顯示數(shù)據(jù)庫(kù)數(shù)據(jù)的內(nèi)容,在Swing Container頁(yè)簽,選取jScrollPane圖標(biāo),在this的中間拖拽一個(gè)大的區(qū)域,接著在組件盤(pán)內(nèi)點(diǎn)選Swing 頁(yè)簽,選取JTable圖標(biāo),將Jtable加入到j(luò)ScrollPane中。
這樣我的界面就做好了,但這個(gè)界面不能隨窗口自動(dòng)調(diào)整大小。下面編程實(shí)現(xiàn)手動(dòng)布局,使各區(qū)域能隨窗口自動(dòng)調(diào)整大小。
先用鼠標(biāo)選中this窗體,再選擇右邊的事件Events中的componentResized,雙擊鼠標(biāo)就進(jìn)到void this_componentResized(ComponentEvent e) {}中,在{}中寫(xiě)入下列代碼:
//設(shè)置jPanel1的起點(diǎn)坐標(biāo)
jPanel1.setLocation(0,0);
//設(shè)置jPanel1的高度和寬度
jPanel1.setSize(this.getWidth(),jPanel1.getHeight());
//設(shè)置jPanel2的起點(diǎn)坐標(biāo)(37是標(biāo)題欄的高度)
jPanel2.setLocation(0,this.getHeight()-jPanel2.getHeight()-37);
//設(shè)置jPanel1的高度和寬度
jPanel2.setSize(this.getWidth(),jPanel2.getHeight());
//設(shè)置jScrollPanel的起點(diǎn)坐標(biāo)
jScrollPane1.setLocation(0,jPanel1.getHeight());
//設(shè)置jScrollPanel的高度和寬度
jScrollPane1.setSize(this.getWidth(),jPanel2.getY()-jPanel1.getHeight());
本程序只調(diào)整了Jpanel1、Jpanel2和JScrollPane1隨窗口變化,同樣的方法,可以使按鈕、文本框等一起隨窗口變化。
程序在“查詢”按鈕事件中模擬從數(shù)據(jù)庫(kù)中取數(shù)據(jù),并顯示在表格中。為了簡(jiǎn)潔,程序沒(méi)有對(duì)輸入條件、增加、刪除、修改等進(jìn)行處理。
程序源代碼:
package src
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
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) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Frame1 frame1 = new Frame1();
//定義顯示窗體的大小顯示窗口
frame1.setSize(400, 350);
frame1.show();
//激活“查詢”按鈕事件
frame1.jButton1.doClick();
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(null);
jPanel1.setBackground(Color.red);
jPanel1.setBounds(new Rectangle(43, 15, 297, 48));
jPanel1.setLayout(null);
jPanel2.setBounds(new Rectangle(50, 232, 297, 48));
jPanel2.setLayout(null);
jPanel2.setBackground(Color.orange);
jScrollPane1.getViewport().setBackground(Color.pink);
jScrollPane1.setBounds(new Rectangle(53, 74, 287, 138));
jLabel1.setFont(new java.awt.Font("Dialog", 0, 15));
jLabel1.setText("輸入查內(nèi)容");
jLabel1.setBounds(new Rectangle(44, 12, 80, 27));
jTextField1.setText("");
jTextField1.setBounds(new Rectangle(125, 14, 70, 22));
jButton1.setBounds(new Rectangle(221, 12, 61, 24));
jButton1.setFont(new java.awt.Font("Dialog", 0, 13));
jButton1.setText("查詢");
jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(13, 14, 66, 27));
jButton2.setFont(new java.awt.Font("Dialog", 0, 13));
jButton2.setText("增加");
jButton3.setText("刪除");
jButton3.setBounds(new Rectangle(115, 14, 66, 27));
jButton3.setFont(new java.awt.Font("Dialog", 0, 13));
jButton4.setText("修改");
jButton4.setBounds(new Rectangle(217, 14, 66, 27));
jButton4.setFont(new java.awt.Font("Dialog", 0, 13));
this.addHierarchyBoundsListener(new Frame1_this_hierarchyBoundsAdapter(this));
this.addComponentListener(new Frame1_this_componentAdapter(this));
this.getContentPane().add(jPanel1, null);
jPanel1.add(jTextField1, null);
jPanel1.add(jButton1, null);
jPanel1.add(jLabel1, null);
this.getContentPane().add(jPanel2, null);
jPanel2.add(jButton3, null);
jPanel2.add(jButton4, null);
jPanel2.add(jButton2, null);
this.getContentPane().add(jScrollPane1, null);
jScrollPane1.getViewport().add(jTable1, null);
}
void this_componentResized(ComponentEvent e) {
//設(shè)置jPanel1的起點(diǎn)坐標(biāo)
jPanel1.setLocation(0,0);
//設(shè)置jPanel1的高度和寬度
jPanel1.setSize(this.getWidth(),jPanel1.getHeight());
//設(shè)置jPanel2的起點(diǎn)坐標(biāo)(37是標(biāo)題欄的高度)
jPanel2.setLocation(0,this.getHeight()-jPanel2.getHeight()-37);
//設(shè)置jPanel2的高度和寬度
jPanel2.setSize(this.getWidth(),jPanel2.getHeight());
//設(shè)置jScrollPanel的起點(diǎn)坐標(biāo)
jScrollPane1.setLocation(0,jPanel1.getHeight());
//設(shè)置jScrollPanel的高度和寬度
jScrollPane1.setSize(this.getWidth(),jPanel2.getY()-jPanel1.getHeight());
}
void jButton1_actionPerformed(ActionEvent e) {
// “查詢”按鈕事件,模擬從數(shù)據(jù)庫(kù)中取數(shù)據(jù)并顯示在表格中
try
{
Vector vcol = new Vector(); //列名
Vector vrow = new Vector(); //內(nèi)容
//用一個(gè)for循環(huán)來(lái)模擬數(shù)據(jù)庫(kù)的內(nèi)容
for (int col=1;col31;col++) {
vcol.addElement("列"+col);
}
for (int row=1;row101;row++) {
Vector vr1 = new Vector();
for (int col=1;col31;col++) {
vr1.addElement(row+"/"+col);
}
vrow.addElement(vr1);
}
DefaultTableModel dtm=new DefaultTableModel(vrow,vcol);
jTable1 = new JTable(vrow,vcol);
//滾動(dòng)條設(shè)置左右滾
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//在滾動(dòng)條中放入表
this.jScrollPane1.getViewport().add(jTable1, null);
}
catch(Exception ex)
{
System.out.println("錯(cuò)誤:" + ex);
}
}
}
class Frame1_this_hierarchyBoundsAdapter extends java.awt.event.HierarchyBoundsAdapter {
Frame1 adaptee;
Frame1_this_hierarchyBoundsAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void ancestorResized(HierarchyEvent e) {
}
}
class Frame1_this_componentAdapter extends java.awt.event.ComponentAdapter {
Frame1 adaptee;
Frame1_this_componentAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void componentResized(ComponentEvent e) {
adaptee.this_componentResized(e);
}
}
class Frame1_jButton1_actionAdapter implements java.awt.event.ActionListener {
Frame1 adaptee;
Frame1_jButton1_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
網(wǎng)站欄目:java代碼獲取布局寬度,布局寬度值
網(wǎng)站路徑:http://aaarwkj.com/article36/hchepg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、、網(wǎng)站排名、網(wǎng)站營(yíng)銷(xiāo)、外貿(mào)建站、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)