标签归档:swing

Java-Swing界面的各种风格

package style;

import javax.swing.UIManager;

public class Test1 {
public static void main(String[] args) {

try {

UIManager
.setLookAndFeel(“com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel”);// Nimbus风格,新出来的外观,jdk6
// update10版本以后的才会出现

// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//当前系统风格

// UIManager.setLookAndFeel(“com.sun.java.swing.plaf.motif.MotifLookAndFeel”);//Motif风格,外观接近windows经典,但宽宽大大,而且不是黑灰主色,而是蓝黑

// UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());//跨平台的Java界面风格,不太明白这种说法

// UIManager.setLookAndFeel(“com.sun.java.swing.plaf.windows.WindowsLookAndFeel”);//windows风格

// UIManager.setLookAndFeel(“javax.swing.plaf.windows.WindowsLookAndFeel”);//windows风格

// UIManager.setLookAndFeel(“javax.swing.plaf.metal.MetalLookAndFeel”);//java风格

// UIManager.setLookAndFeel(“com.apple.mrj.swing.MacLookAndFeel”);//现在在我的机器上没有特殊显示,有待有兴趣的朋友考察,并多谢告知

} catch (Exception e) {
e.printStackTrace();
}

}
}

java-如何去掉JFrame上的最大化最小化和关闭按钮

在JDK1.4以前,我们只有一种方式来去掉窗口的标题栏,那就是直接使用JWindow,用JWindow来代替JFrame使用。但用过JWindow的人一定知道,JWindow在操作系统的任务栏是不可见的,这样我们就无法在几个视窗之间来切换到这个窗口了。

使用JWindow也是很多人知道的一种去掉标题栏的方式。但从Java1.4开始,有一种新的方式可以使用,我们来看看。

现在我们创建一个类并继承于JFrame,
public class DecoratedFrame extends JFrame {
public DecoratedFrame() {
this.getContentPane().add(new JLabel(“Just a test.”));
this.setUndecorated(true); // 去掉窗口的装饰
this.getRootPane().setWindowDecorationStyle(JRootPane.NONE); //采用指定的窗口装饰风格
this.setSize(300,150);
}
public static void main(String[] args) {
JFrame frame = new DecoratedFrame();
frame.setVisible(true);
}
}

请看加了注释的两行,要去掉标题栏,关键代码就是这两行,第1行去掉窗口的装饰,第2行为窗口指定头饰风格。在这里,可以通过调用this.getRootPane().setWindowDecorationStyle()方法为窗口指定以下的装饰风格:

NONE                  无装饰(即去掉标题栏)
FRAME                 普通窗口风格
PLAIN_DIALOG          简单对话框风格
INFORMATION_DIALOG    信息对话框风格
ERROR_DIALOG          错误对话框风格
COLOR_CHOOSER_DIALOG 拾色器对话框风格
FILE_CHOOSER_DIALOG   文件选择对话框风格
QUESTION_DIALOG       问题对话框风格
WARNING_DIALOG        警告对话框风格

在使用Jframe的时候,普遍都会有标题栏,还有最小化,最大化,关闭按纽的,还要实现拖动窗体的功能。
这样的话,对我们实现自定义样式的窗体是很有影响的,

1) 要去掉标题栏:
jFrame.setUndecorated(true);
// 这样就可以去掉Jframe中对window的装饰了,

2) 去掉标题栏,我们就有可能要给程序写代码提供最小化,最大化,关闭的操作,如何实现?
只要给按纽添加MouseListener,
在mouseClick中的调用

jFrame.setExtendedState(jFrame.ICONIFIED); //最小化

if(jFrame.getExtendedState() != jFrame.MAXIMIZED_BOTH)
jFrame.setExtendedState(jFrame.MAXIMIZED_BOTH);
else
jFrame.setExtendedState(jFrame.NORMAL);
// 最大化或正常状态

System.exit(0);
// 关闭,退出程序

3) 要拖动窗体的功能:
只要给窗体中的某个组件添加如下代码就行了:

Point loc = null;    Point tmp = null;    boolean isDragged = false;    private void setDragable() {        this.addMouseListener(new java.awt.event.MouseAdapter() {            public void mouseReleased(java.awt.event.MouseEvent e) {               isDragged = false;               jFrame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));            }            public void mousePressed(java.awt.event.MouseEvent e) {               tmp = new Point(e.getX(), e.getY());               isDragged = true;               jFrame.setCursor(new Cursor(Cursor.MOVE_CURSOR));            }        });        this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {            public void mouseDragged(java.awt.event.MouseEvent e) {               if(isDragged) {                   loc = new Point(jFrame.getLocation().x + e.getX() – tmp.x,                     jFrame.getLocation().y + e.getY() – tmp.y);                   jFrame.setLocation(loc);               }            }        }); }  在初始化该组件的时候调用 setDragable() 就可以使组件具体拖放窗体的功能了。因为可能有背景图,可能会重写paint方法,不能在paint方法中调用setDragable()

java当窗体获得焦点时重画窗体

百度知道提的问,感谢热心网友回答

 

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MyPanel extends JPanel{
    protected void paintComponent(Graphics g){
        //绘图代码。在面板上绘图
        g.drawOval(30,30,60,100);
    }
}
public class MyFrame extends JFrame{
    MyPanel p = new MyPanel();
    MyFrame(){
        super("窗口焦点监听");
        setBounds(200,200,600,400);
        add(p);
        addWindowFocusListener(new WindowAdapter(){//注册窗口焦点监听器
            public void windowGainedFocus(WindowEvent e){
                repaint();//重绘窗口,将使得窗口内的每个组件也重绘
            }
            public void windowLostFocus(WindowEvent e) {}//看你是否需要
        });
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
    public static void main(String []s){
        new MyFrame();
    }
}

JTextArea设置滚动条

应将JTextArea置于JScrollPanel中

若要使只有垂直滚动条而没有水平滚动条,使用JTextArea.setLineWrap(true),自动换行。
JTextArea txaDisplay = new JTextArea();
JScrollPane scroll = new JScrollPane(txaDisplay); 
//把定义的JTextArea放到JScrollPane里面去

//分别设置水平和垂直滚动条自动出现
scroll.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

//分别设置水平和垂直滚动条总是出现
scroll.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

//分别设置水平和垂直滚动条总是隐藏scroll.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_NEVER);

java也能写出漂亮的界面(Java开源Swing外观)

Substance look & feel

这个项目的目的是提供一个流行的外观(look & feel)。这个外观(look & feel)联合了Windows XP和MacOS 10.4最好的特性并且需要JDK 5.0以上。

更多Substance look & feel信息

  JGoodies look & feel
JGoodies look&feels让你的Swing应用程序与applets看起来更漂亮.屏幕截图如下:

更多JGoodies look & feel信息

  Smooth Metal look & feel

  Napkin look & feel

  Liquid look & feel

  Metouia look & feel

  Office 2003 & XP look & feel

  3D look & feel
3D Look&Feel是轻量级的.
更多3D look & feel信息

  pgs look & feel
PgsLookAndFeel是一个漂亮的,跨平台的Swing外观.
更多pgs look & feel信息

  GTK/Swing
GTK/Swing是一个可插入的Swing外观.它尽可能地模仿并接近默认的GTK+.

更多GTK/Swing信息

  l2fprod-common
Swing已经构建很多组件,但是还有一些比较流行的组件没有提供.这个开源项目刚好提供这些少掉的组件.l2fprod-common提供的组件有:PropertySheet,collapsible task pane,button bar,font chooser,directory chooser.以下是其中一个组件.
更多l2fprod-common信息

  Oyoaha look & feel
Oyoaha look & feel现在也是一个开源的项目.它基于apache-like license发布.
更多Oyoaha look & feel信息

  Compiere Looks
Compiere Looks是一个3D color,它扩展了Java Metal pluggable Look and Feel。
更多Compiere Looks信息

  Tonic Look & Feel
这是Swing金属(Metal)外观的免费实现方案.
更多Tonic Look & Feel信息

  Quaqua
Quaqua能让Java应用程序的皮肤换成接近于Mac OS X的苹果人性化界面标准。
更多Quaqua信息

  Liquid look&feel
基于Mosfet Liquid KDE 3.x主题的Swing外观。

更多Liquid look&feel信息

  Squareness
Squareness的目的是为不同应用程序和操作系统提供一个统一的外观。
更多Squareness信息

  A03 Look And Feel
这个Java Look&Feel整合了常用到的一些外观风格。
更多A03 Look And Feel信息

  NimROD L&F
NimROD L&F是一个具有多种主题的Swing皮肤。
更多NimROD L&F信息

  LipstikLF
LipstikLF Look and Feel是模仿KDE主题引擎Lipstik实现的一个Swing皮肤。LipstikLF设计地非常快速、简洁并尽可能做得与Lipstik外观相似。它适用于Java1.4和1.5。
更多LipstikLF信息

  SeaGlass
SeaGlass是一个跨平台的Java Swing外观,只支持JRE1.6以上运行的环境。
buttons.jpg
progress.jpgsliders.jpg
windows-chrome-2.jpg更多SeaGlass信息