首页编程java编程java简单漂亮gui界面(java自学难度大吗)

java简单漂亮gui界面(java自学难度大吗)

编程之家2026-05-311002次浏览

今天给各位分享java简单漂亮gui界面的知识,其中也会对java自学难度大吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

java简单漂亮gui界面(java自学难度大吗)

如何用JavaGUI设计QQ那样的界面

代码没法给你写,但是道理是很简单的.其实QQ的列表原理非常简单,其界面就是一颗JTree,设置树根不可见,树根的没给子节点就是每个分组.而列表内容的实现就更简单了,自己写一个实现了TableCellRenderer的渲染器,然后给设置为分组下每个节点的渲染器就行了.数据结构也超简单,就是三层树,第一层是根root,设置为不可见,所以只能看到他的几个节点;第二层是根root的节点,也就是分组,有几个分组就有几个节点,新建一个分组就是在root上添加一个新的子节点;第三层就是每个分组的内容了,这就是QQ列表的实现原理.别告诉我你不知道渲染器是什么,如果还没学到,等学到了你就能做出来.

java swing界面设计

GUI图形界面设计的重点是布局

SWING也是采用AWT的布局方式,进行布局管理的。(实现LayoutManager接口的方法,来进行管理布局,API中已有实现类,我们通常只需要指定实现类,而不需要自己重写方法)

常用的布局有绝对布局,边界布局BorderLayout,流布局FlowLayout,表格布局GridLayout。

JFrame等重量级组件,默认布局是边界布局,JPanel轻量级组件,默认布局是流布局

绝对布局:布局的特点,需要指定每个组件的大小,和具体位置。

java简单漂亮gui界面(java自学难度大吗)

优点:充分的自定义,充分的自由,可以写出漂亮的,细致的界面

缺点:绝对布局在不同的操作系统下,会有一些不同程度的变化,导致界面变形,甚至组件重叠等。在同一操作系统下,窗口放大缩小,界面也会变形

绝对布局的范例

importjavax.swing.JButton;

importjavax.swing.JFrame;

publicclassFrame1extendsJFrame{

java简单漂亮gui界面(java自学难度大吗)

JButtonjb1;

publicFrame1(){

setLayout(null);//指定窗口的布局管理器为空,也就是绝对布局

jb1=newJButton("按钮");

jb1.setLocation(100,50);//指定组件的位置

jb1.setSize(80,30);//指定组件的大小

//jb1.setBounds(100,50,80,30);//上面两句代码等同于这句代码

add(jb1);

setSize(300,200);

setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

publicstaticvoidmain(String[]args){

newFrame1().setVisible(true);

}

}边界布局BorderLayout:它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件

优点:比较常用的布局,简单易掌握,放大缩小,不影响组件的位置

缺点:组件位置不够灵活。每个区域如果添加多个组件,那么后面的组件会覆盖前面的组件。(因为可以嵌套其他组件使用,所以这些缺点基本都能克服)

3.代码参考

importjavax.swing.*;

importjava.awt.*;

publicclassP004_BorderLayout{

JFramejframe;

JButtonjb1,jb2,jb3,jb4,jb5;

publicP004_BorderLayout(){

jframe=newJFrame();

jframe.setTitle("边界布局");

jframe.setBounds(300,200,180,180);

jb1=newJButton("东");

jframe.add(jb1,BorderLayout.EAST);

jb2=newJButton("西");

jframe.add(jb2,BorderLayout.WEST);

jb3=newJButton("南");

jframe.add(jb3,BorderLayout.SOUTH);

jb4=newJButton("北");

jframe.add(jb4,BorderLayout.NORTH);

jb5=newJButton("中");

jframe.add(jb5);//BorderLayout.CENTER可以省略

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jframe.setVisible(true);

}

publicstaticvoidmain(String[]args){

newP004_BorderLayout();

}

}

流布局FlowLayout:像一排文字一个挨着一个的布局。流布局用于安排有向流中的组件,这非常类似于段落中的文本行。流的方向可以指定。

优点:可以快速添加组件,不用指定位置,也不用指定边界

缺点:线性排列,外观单调。(嵌套其他布局,可以忽略缺点)

代码参考

importjava.awt.FlowLayout;

importjavax.swing.*;

publicclassP003_FlowLayout{

JFramejframe;

publicP003_FlowLayout(){

jframe=newJFrame("流式布局");

for(inti=1;i<=5;i++){

jframe.add(newJButton(i+""));

}

jframe.setLocation(380,260);

jframe.setLayout(newFlowLayout(FlowLayout.LEFT));//窗口指定位流式布局,方向从左往右

jframe.pack();

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jframe.setVisible(true);

}

publicstaticvoidmain(String[]args){

newP003_FlowLayout();

}

}

表格布局GridLayout:它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。

优点:组件整齐排列,

缺点:如果添加的组件数量,和指定的数量不一致,容易导致缺失等

参考代码

importjavax.swing.*;

importjava.awt.*;

publicclassP005_GridLayout{

JFramejframe;

publicP005_GridLayout(){

jframe=newJFrame("表格布局");

jframe.setLayout(newGridLayout(3,4));//表格布局,3行4列

for(inti=0;i<=12;i++){

jframe.add(newJButton(i+""));

}

jframe.setLocation(300,200);

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jframe.pack();

jframe.setVisible(true);

}

publicstaticvoidmain(String[]args){

newP005_GridLayout();

}

}

最后:布局是一种灵活的东西。你可以一个布局里嵌套另外一个布局。

比如边界布局的窗口的中间,加入按表格布局的组件,表格布局里面是流式布局。

很多的复杂的界面,通过细分,都能拆分成常用布局的嵌套

编写一个Java GUI

试一下下面的代码

(如果点击按钮后没有任何变化,将窗口最小化一下就有了)

没有出现这个问题的话,也请告诉我一下~

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

public class painting extends JFrame implements ActionListener{

private JButton round,rectangle,ellipse,beeline;

private JLabel xaxis,yaxis,remain,information;

private JTextField xTF,yTF;

private BorderLayout layout;

private Container cp;

private JPanel pCenter;

Vector<Object> v=new Vector<Object>();//定义一个集合类用于存储按钮对象

public painting(){//构造方法------------------框架初始化-------------------

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setTitle("painting");

setSize(400,500);

layout= new BorderLayout();

cp= getContentPane();

cp.setLayout(layout);

round= new JButton("画圆");

rectangle= new JButton("画矩形");

ellipse= new JButton("画椭圆");

beeline= new JButton("画直线");

xaxis=new JLabel("x坐标");

yaxis=new JLabel("y坐标");

remain=new JLabel("右下角坐标(400,500)");

xTF=new JTextField("0",5);

yTF=new JTextField("0",5);

JPanel pUp= new JPanel();//第一个面板在上部

pUp.add(remain);

pUp.add(xaxis);//置两个文本框

pUp.add(xTF);

pUp.add(yaxis);

pUp.add(yTF);

cp.add(pUp,"North");

//pCenter=new JPanel();//第二个面板在中部

//pCenter.add(information);//置显示说明与画图区

//cp.add(pCenter,"Center");

JPanel pDown= new JPanel();//第三个面板在下部

pDown.add(round);//置四个按钮

pDown.add(rectangle);

pDown.add(ellipse);

pDown.add(beeline);

cp.add(pDown,"South");

round.addActionListener(this);//置按钮监听--------------按钮行为监听与响应-------------

rectangle.addActionListener(this);

ellipse.addActionListener(this);

beeline.addActionListener(this);

}

public void actionPerformed(ActionEvent e){//监听响应

v.add(e.getSource());//将按钮情况存入v中

}

public void paint(Graphics g){//--------------绘图响应-------------

super.paint(g);

int xx=Integer.parseInt(xTF.getText());//获取位置值

int yy=Integer.parseInt(yTF.getText());

int size=0;

Object o;

//while(v.size()!=size){//当用户点击按钮选择某一种图形时,v的大小就会比size值大1,当绘图完成后,v.size又等于size;效果就是:出现点击即刻处理

o=v.lastElement();

if(o== round){g.drawOval(xx,yy,50,50);}

else if(o== rectangle){g.drawRect(xx,yy,100,50);}

else if(o== ellipse){g.drawOval(xx,yy,100,50);}

else if(o== beeline){g.drawLine(xx,yy,xx+100,yy);}

size++;

}

}

public static void main(String[] args){//------------程序入口-------------

JFrame frame= new painting();

frame.setVisible(true);

}

}

关于java简单漂亮gui界面和java自学难度大吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

三角函数公式表格30 45 60(三角形角度计算公式)vb编程代码大全例题,vb常用代码