日期:2014-05-20  浏览次数:20905 次

setBorder的使用问题,出现了异常
请先看代码:

JTextField jt = new JTextField("你好!");
jl_center.add(jt);
jt.setOpaque(false);
jt.setBorder(
new Border(){
@Override
public boolean isBorderOpaque() {
// TODO Auto-generated method stub
return false;
}

@Override
public Insets getBorderInsets(Component c) {
// TODO Auto-generated method stub
return null;
}

@Override
public void paintBorder(Component c, Graphics g, int x, int y,
int width, int height) {
// TODO Auto-generated method stub

}

);

就是这一段代码出了错!
我只不过是在setBorder()里写了个内部类,怎么就错了?
setBorder()的参数本来就是Border啊?我查了API,是public void setBorder(Border border)啊,怎么错了呢?
求教!

------解决方案--------------------
问题在于这些代码你写在哪个方法里。根据经验,如果是构造函数的话,可能就会出问题。
能多贴代码出来么?
------解决方案--------------------

            @Override
            public Insets getBorderInsets(Component c) {
                // TODO Auto-generated method stub
                return null;
            }


所以,NullPointerException
------解决方案--------------------
引用:
引用:
问题在于这些代码你写在哪个方法里。根据经验,如果是构造函数的话,可能就会出问题。
能多贴代码出来么?

我这个代码,目的就是想使得JLabel的边框(也就是JLabel的外延)变得透明!
我找了API,我自己猜用setBorder实现,然后看函数原型是public void setBorder(Border border);

其实也没有更多的代……

首先,对你积极实现这样一个透明边框的努力表示肯定!我也正在调试你的程序。
建议你先用java已有的透明边框类EmptyBorder来完成这个程序。代码如下
package TestLogin_claP;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;

public class TestJLabel_s_BorderLayout extends JFrame {

TestJLabel_s_BorderLayout() {
JLabel jl_top = new JLabel("1 ");
jl_top.setOpaque(true);
jl_top.setBackground(Color.black);
JLabel jl_left = new JLabel(" 2");
jl_left.setOpaque(true);
jl_left.setBackground(Color.blue);
JLabel jl_buttom = new JLabel("3 ");
jl_buttom.setOpaque(true);
jl_buttom.setBackground(Color.cyan);
JLabel jl_right = new JLabel("4 ");
jl_right.setOpaque(true);
jl_right.setBackground(Color.gray);
JLabel jl_center = new JLabel();