1.调字体,不行就加图片。
2.在JButton的鼠标按下事件处理试试

解决方案 »

  1.   

    public void changeFonts() {
            Font font;
            String fontName = "dialog";//default font;
            int fontSize = 12;//default font size;        try
            {
               UIDefaults table = UIManager.getDefaults();
               Enumeration eKeys = table.keys();
               while (eKeys.hasMoreElements())
               {
                  String key = eKeys.nextElement().toString();
                  if ( (key.indexOf("font") != -1) || (key.indexOf("Font") != -1) )
                  {
                     font = new Font(fontName,Font.PLAIN,fontSize);
                     UIManager.put(key,font);
                  }
                }
            }
            catch (Exception e)
            {
               //
            }     }
      

  2.   

    1、swing默认的是粗字体,看着是觉得不太舒服,JTable、JTextArea、JTextField等文本组件的输入框中采用的是系统字体,所以看着舒服点。你只要把swing组件的字体设置好就可以解决这个问题了。2、你可以用线程来处理需要很长时间的事件。这个例子把上面两个问题就包含了:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class Test {
      JFrame frame;
      JButton button;  public Test() {
        frame = new JFrame();
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent windowEvent) {
            System.exit(0);
          }
        });
        button = new JButton("点击前");
        button.setFont(new Font("宋体", 0, 12)); //给组件设置字体,这样就不会因粗体而影响视觉
        button.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent actionEvent) {
            button.setText("点击后"); //更改按钮上的文字
            new TestThread(button).start(); //用线程来处理需要很长时间的事件
          }
        });
        frame.getContentPane().add(button);
        frame.setSize(360, 120);
        frame.setVisible(true);
      }  public static void main(String[] args) {
        new Test();
      }
    }//线程,处理需要很长时间的事件
    class TestThread extends Thread{
      JButton button;
      public TestThread(JButton button){
        this.button = button;
      }
      public void run(){
        for(int i=0;i<900000000;i++){
        }
        button.setText("点击后" + "   (事件处理完成)");
      }
    }
      

  3.   

    第一个: Table的字体是Java画的, Frame的Title是Windows的.
    如果你想用Java画的, 可以设定JFrame的一个Decorate属性为false, 当然要用支持自己画Title的LookAndFeel, 比如Metal的. 或者Alloy的. 可以看一下Alloy的帮助就会明白了. 换UIManager的字体是没有用的.
    第二个: 在响应Button的事件时, 即使你改变了Button的文本, 但是还没有来得及重新描画. 你可以试一下validate(), repaint()之类的方法. 不过估计不行. 还是线程比较好.
      

  4.   

    谢谢字体的问题,只要在JBuilder中,把大小由11改为12就行了,呵呵,漂亮多了