
正文
java获取窗口大小代码,java获取窗口大小代码命令
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java 中如何获取当前窗体大小
你说的是awt和swing里的窗体吧
举个例子吧
public class Test
{
public static void main(String[] args)
{
}
}
class MyFrame extends JFrame
{
public MyFrame(String title)
{
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,200);
//这里通过Dimension来获取窗体宽高....
Dimension d = getSize();
System.out.println("width is:" + d.width);
System.out.println("height is:" + d.height);
setVisible(true);
}
}
相关问答
Q1: JAVA 获得窗口大小问题
楼主是想让控件随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的起点坐标
jPanel1.setLocation(0,0);
//设置jPanel1的高度和宽度
jPanel1.setSize(this.getWidth(),jPanel1.getHeight());
//设置jPanel2的起点坐标(37是标题栏的高度)
jPanel2.setLocation(0,this.getHeight()-jPanel2.getHeight()-37);
//设置jPanel1的高度和宽度
jPanel2.setSize(this.getWidth(),jPanel2.getHeight());
//设置jScrollPanel的起点坐标
jScrollPane1.setLocation(0,jPanel1.getHeight());
//设置jScrollPanel的高度和宽度
jScrollPane1.setSize(this.getWidth(),jPanel2.getY()-jPanel1.getHeight());
本程序只调整了Jpanel1、Jpanel2和JScrollPane1随窗口变化,同样的方法,可以使按钮、文本框等一起随窗口变化。
程序在“查询”按钮事件中模拟从数据库中取数据,并显示在表格中。为了简洁,程序没有对输入条件、增加、删除、修改等进行处理。
程序源代码:
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("输入查内容");
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) {
//设置jPanel1的起点坐标
jPanel1.setLocation(0,0);
//设置jPanel1的高度和宽度
jPanel1.setSize(this.getWidth(),jPanel1.getHeight());
//设置jPanel2的起点坐标(37是标题栏的高度)
jPanel2.setLocation(0,this.getHeight()-jPanel2.getHeight()-37);
//设置jPanel2的高度和宽度
jPanel2.setSize(this.getWidth(),jPanel2.getHeight());
//设置jScrollPanel的起点坐标
jScrollPane1.setLocation(0,jPanel1.getHeight());
//设置jScrollPanel的高度和宽度
jScrollPane1.setSize(this.getWidth(),jPanel2.getY()-jPanel1.getHeight());
}
void jButton1_actionPerformed(ActionEvent e) {
// “查询”按钮事件,模拟从数据库中取数据并显示在表格中
try
{
Vector vcol = new Vector(); //列名
Vector vrow = new Vector(); //内容
//用一个for循环来模拟数据库的内容
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);
//滚动条设置左右滚
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//在滚动条中放入表
this.jScrollPane1.getViewport().add(jTable1, null);
}
catch(Exception ex)
{
System.out.println("错误:" + 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);
}
}
Q2: 关于java 窗口大小的设定问题。
修改后的代码:
jc1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
jt.append("复选框1被选中\n");}
});
jc2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jt.append("复选框2被选中\n");}});
jc3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jt.append("复选框3被选中\n");}});
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(400,400);
关于大小设定的问题我不知道有什么好方法是窗口看起来大小恰当,窗口大小应该都是人为设定的
Q3: java 如何获取活动窗口的大小
'VB获得活动窗口标题、位置、大小
'运行后,在form上print当前活动窗口信息
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Sub Form_Load()
Me.AutoRedraw = True
Timer1.Interval = 2000
Timer1.Enabled = True
End Sub
Sub Timer1_Timer()
Dim p As RECT
Dim h As Long
Dim str1 As String
h = GetActiveWindow '获得活动窗口句柄
str1 = String(255, 0)
GetWindowText h, str1, 255 '获得标题
GetWindowRect h, p '获得窗口位置、大小
Print "窗口标题:" Left(str1, InStr(str1, Chr(0)) - 1) " 窗口位置:Left=" p.Left " Top=" p.Top " 大小是:" p.Right - p.Left "X" p.Bottom - p.Top
End Sub
Q4: java获取当前jframe窗口大小
Swing中没有提供直接获取的方法。
但是对于JFrame和JDialog,可以通过getContentPane()获取窗口的主面板,然后获得。
Container contentPane=myFrame.getContentPane();
// 注意只有窗口显示后getLocationOnScreen才可以调用,否则出错
Point contentPos = contentPane.getLocationOnScreen();// 在屏幕的坐标
Dimension size = contentPane.getSize(); // 可视区域的大小
Q5: JAVA 如何获得窗口尺寸大小
frame.size()呀; 在窗口变化时去获得这个大小呀。
窗口变化肯定有条件的。








