java 关于Frame类

Python015

java 关于Frame类,第1张

当需要扩展Frame的功能或者想在实例化的多做功能的时候,就写上extends frame,

譬如想在实例化Frame的同时设定size

public class MyFrame extends Frame {

public MyFrame(String s, int width, int height) {

super(s)

super.setSize(width, height)

}

}

这样你实例化MyFrame的时候就已经设定好大小了,少写一些代码

public static void main(String args[]){

MyFrame frame = new MyFrame("My Frame", 300, 200)

}

同样功能的不继承,则需要

public static void main(String args[]){

Frame frame = new Frame("My Frame")

frame.setSize(300, 200)

}

clear?

图片看起来很模糊,隐约看到需要一个登录窗口,那就分享一下以前练习的登录窗口demo吧。

先上效果图:

登录界面

源码如下:

AbsoluteLoginFrame.java

public class AbsoluteLoginFrame extends JFrame {

  private static final int LOGIN_WIDTH = 600

  private static final int LOGIN_HEIGHT = 400

  private static final long serialVersionUID = -2381351968820980500L

  public AbsoluteLoginFrame(){

      //设置窗口标题

      setTitle("登录界面")

      //设置一个初始面板,填充整个窗口

      JPanel loginPanel = new JPanel()

      //设置背景颜色

      loginPanel.setBackground(new Color(204, 204, 204))//#CCC

      loginPanel.setLayout(null)

      JPanel centerPanel = new JPanel()

      centerPanel.setBackground(Color.WHITE)

      centerPanel.setBounds(114, 70, 360, 224)

      centerPanel.setLayout(null)

      JLabel jLabel = new JLabel("用户名:")

      jLabel.setOpaque(true)

      jLabel.setBackground(Color.YELLOW)

      jLabel.setBounds(60, 60, 54, 20)

      JLabel label = new JLabel("密    码:")

      label.setOpaque(true)

      label.setBackground(Color.CYAN)

      label.setBounds(60, 90, 54, 20)

      JTextField textField = new JTextField(15)

      textField.setBounds(130, 60, 166, 21)

      JPasswordField passwordField = new JPasswordField(15)

      passwordField.setBounds(130, 90, 166, 21)

      JButton jButton = new JButton("登录")

      jButton.setBounds(148, 120, 62, 28)

      centerPanel.add(jLabel)

      centerPanel.add(label)

      centerPanel.add(textField)

      centerPanel.add(jButton)

      centerPanel.add(passwordField)

      loginPanel.add(centerPanel)

      getContentPane().add(loginPanel)//将初始面板添加到窗口中

      setSize(LOGIN_WIDTH, LOGIN_HEIGHT)//设置窗口大小

      setLocation(Screen.getCenterPosition(LOGIN_WIDTH, LOGIN_HEIGHT))//设置窗口位置

      setDefaultCloseOperation(EXIT_ON_CLOSE)//设置窗口默认关闭方式

      setResizable(false)

      setVisible(true)

  }

  public static void main(String[] args) {

      new AbsoluteLoginFrame()

  }

}

Screen.java

public class Screen {

  private int width

  private int height

  public Screen(){

      Toolkit toolkit = Toolkit.getDefaultToolkit()

      Dimension screenSize = toolkit.getScreenSize()

      this.width = screenSize.width

      this.height = screenSize.height

  }

  public static Point getCenterPosition(int width, int height){

      Screen screen = new Screen()

      int x = (screen.getWidth() - width) / 2

      int y = (screen.getHeight() - height) / 2

      return new Point(x, y)

  }

  public int getWidth() {

      return width

  }

  public void setWidth(int width) {

      this.width = width

  }

  public int getHeight() {

      return height

  }

  public void setHeight(int height) {

      this.height = height

  }

}

java中new关键字是用来创建对象实例的。

frame

w=new

frame()应该是创建一个frame类的实例吧。

如果是JFrame

w

=

new

JFrame()就是用来创建一个

窗体对象

实例w。JFrame是java类库提供的类,用来创建

图形界面

窗体。