jbuilder使用activeX,要用到jndi吗

解决方案 »

  1.   

    JEditorPane可以显示网页,图像等
    他的子类JTextPane功能更强大
      

  2.   

    jacob can be used to access activex
      

  3.   

    awt中用TextArea
    swing中用JTextArea
      

  4.   

    JEditorPane
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  5.   

    JTextPane更好!!!
    专门处理字体变化(颜色、大小、字体等等)
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  6.   

    这里有一个Cay Horstmann的程序,你看一看
    //InternalFrameTest.java
    import java.awt.*;
    import java.awt.event.*;
    import java.beans.*;
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.event.*;public class InternalFrameTest
    {  public static void main(String[] args)
       {  JFrame frame = new DesktopFrame();
          frame.show();
       }
    }class DesktopFrame extends JFrame
       implements ActionListener, VetoableChangeListener
    {  public DesktopFrame()
       {  setTitle("InternalFrameTest");
          setSize(600, 400);
          addWindowListener(new WindowAdapter()
             {  public void windowClosing(WindowEvent e)
                {  System.exit(0);
                }
             } );      desktop = new JDesktopPane();
          setContentPane(desktop);      // set up menus      JMenuBar menuBar = new JMenuBar();
          setJMenuBar(menuBar);
          JMenu fileMenu = new JMenu("File");
          menuBar.add(fileMenu);
          openItem = new JMenuItem("Open");
          openItem.addActionListener(this);
          fileMenu.add(openItem);
          exitItem = new JMenuItem("Exit");
          exitItem.addActionListener(this);
          fileMenu.add(exitItem);
          JMenu windowMenu = new JMenu("Window");
          menuBar.add(windowMenu);
          nextItem = new JMenuItem("Next");
          nextItem.addActionListener(this);
          windowMenu.add(nextItem);
          cascadeItem = new JMenuItem("Cascade");
          cascadeItem.addActionListener(this);
          windowMenu.add(cascadeItem);
          tileItem = new JMenuItem("Tile");
          tileItem.addActionListener(this);
          windowMenu.add(tileItem);
          dragOutlineItem = new JCheckBoxMenuItem("Drag Outline");
          dragOutlineItem.addActionListener(this);
          windowMenu.add(dragOutlineItem);
       }   public void createInternalFrame(Component c, String t)
       {  JInternalFrame iframe = new JInternalFrame(t,
             true, // resizable
             true, // closable
             true, // maximizable
             true); // iconifiable      iframe.getContentPane().add(c);
          desktop.add(iframe);      iframe.setFrameIcon(new ImageIcon("document.gif"));      // add listener to confirm frame closing
          iframe.addVetoableChangeListener(this);      // position frame
          int width = desktop.getWidth() / 2;
          int height = desktop.getHeight() / 2;
          iframe.reshape(nextFrameX, nextFrameY, width, height);      iframe.show();      // select the frame--might be vetoed
          try
          {  iframe.setSelected(true);
          }
          catch(PropertyVetoException e)
          {}      /* if this is the first time, compute distance between
             cascaded frames
          */      if (frameDistance == 0)
             frameDistance = iframe.getHeight()
                - iframe.getContentPane().getHeight();      // compute placement for next frame      nextFrameX += frameDistance;
          nextFrameY += frameDistance;
          if (nextFrameX + width > desktop.getWidth())
             nextFrameX = 0;
          if (nextFrameY + height > desktop.getHeight())
             nextFrameY = 0;
       }
      

  7.   

    JTextPane更好!!!
    专门处理字体变化(颜色、大小、字体等等)
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  8.   


       public void cascadeWindows()
       {  JInternalFrame[] frames = desktop.getAllFrames();
          int x = 0;
          int y = 0;
          int width = desktop.getWidth() / 2;
          int height = desktop.getHeight() / 2;      for (int i = 0; i < frames.length; i++)
          {  if (!frames[i].isIcon())
             {  try
                {  /* try to make maximized frames resizable
                      this might be vetoed
                   */
                   frames[i].setMaximum(false);
                   frames[i].reshape(x, y, width, height);               x += frameDistance;
                   y += frameDistance;
                   // wrap around at the desktop edge
                   if (x + width > desktop.getWidth()) x = 0;
                   if (y + height > desktop.getHeight()) y = 0;
                }
                catch(PropertyVetoException e)
                {}
             }
          }
       }   public void tileWindows()
       {  JInternalFrame[] frames = desktop.getAllFrames();      // count frames that aren't iconized
          int frameCount = 0;
          for (int i = 0; i < frames.length; i++)
          {  if (!frames[i].isIcon())
                frameCount++;
          }      int rows = (int)Math.sqrt(frameCount);
          int cols = frameCount / rows;
          int extra = frameCount % rows;
             // number of columns with an extra row      int width = desktop.getWidth() / cols;
          int height = desktop.getHeight() / rows;
          int r = 0;
          int c = 0;
          for (int i = 0; i < frames.length; i++)
          {  if (!frames[i].isIcon())
             {  try
                {  frames[i].setMaximum(false);
                   frames[i].reshape(c * width,
                      r * height, width, height);
                   r++;
                   if (r == rows)
                   {  r = 0;
                      c++;
                      if (c == cols - extra)
                      {  // start adding an extra row
                         rows++;
                         height = desktop.getHeight() / rows;
                      }
                   }
                }
                catch(PropertyVetoException e)
                {}
             }
          }
       }   public void selectNextWindow()
       {  JInternalFrame[] frames = desktop.getAllFrames();
          for (int i = 0; i < frames.length; i++)
          {  if (frames[i].isSelected())
             {  /* find next frame that isn't an icon and can be
                   selected
                */
                try
                {  int next = i + 1;
                   while (next != i && frames[next].isIcon())
                      next++;
                   if (next == i) return;
                      // all other frames are icons or veto selection
                   frames[next].setSelected(true);
                   frames[next].toFront();
                   return;
                }
                catch(PropertyVetoException e)
                {}
             }
          }
       }   public void vetoableChange(PropertyChangeEvent event)
          throws PropertyVetoException
       {  JInternalFrame iframe = (JInternalFrame)event.getSource();
          String name = event.getPropertyName();
          Object value = event.getNewValue();      // we only want to check attempts to close a frame      if (name.equals("closed") && value.equals(Boolean.TRUE))
          {  // ask user if it is ok to close
             int result
                = JOptionPane.showInternalConfirmDialog(iframe,
                   "OK to close?");         // if the user doesn't agree, veto the close
             if (result == JOptionPane.CANCEL_OPTION)
                throw new PropertyVetoException("User canceled close",
                   event);
          }
       }   public Component createEditorPane(URL u)
       {  // create an editor pane that follows hyperlink clicks      JEditorPane editorPane = new JEditorPane();
          editorPane.setEditable(false);
          editorPane.addHyperlinkListener(new HyperlinkListener()
             {  public void hyperlinkUpdate(HyperlinkEvent event)
                {  createInternalFrame(createEditorPane(event.getURL()),
                      event.getURL().toString());
                }
             });
          try
          {  editorPane.setPage(u);
          }
          catch(IOException e)
          {  editorPane.setText("Error: " + e);
          }
          return new JScrollPane(editorPane);
       }   public void actionPerformed(ActionEvent evt)
       {  Object source = evt.getSource();
          if (source == openItem)
          {  // let user select file         JFileChooser chooser = new JFileChooser();
             chooser.setCurrentDirectory(new File("."));
             chooser.setFileFilter(
                new javax.swing.filechooser.FileFilter()
                {  public boolean accept(File f)
                   {  String fname = f.getName().toLowerCase();
                      return fname.endsWith(".html")
                         || fname.endsWith(".htm")
                         || f.isDirectory();
                   }
                   public String getDescription()
                   { return "HTML Files"; }
                });
             int r = chooser.showOpenDialog(this);         if (r == JFileChooser.APPROVE_OPTION)
             {  // open the file that the user selected            String filename = chooser.getSelectedFile().getPath();
                try
                {  URL fileUrl = new URL("file:" + filename);
                   createInternalFrame(createEditorPane(fileUrl),
                      filename);
                }
                catch(MalformedURLException e)
                {
                }
             }
          }
          else if (source == exitItem)
             System.exit(0);
          else if (source == nextItem)
             selectNextWindow();
          else if (source == cascadeItem)
             cascadeWindows();
          else if (source == tileItem)
             tileWindows();
          else if (source == dragOutlineItem)
          {  desktop.putClientProperty("JDesktopPane.dragMode",
                dragOutlineItem.isSelected() ? "outline" : null);
          }
       }   private JDesktopPane desktop;   private JMenuItem openItem;
       private JMenuItem exitItem;
       private JMenuItem nextItem;
       private JMenuItem cascadeItem;
       private JMenuItem tileItem;
       private JMenuItem dragOutlineItem;   private int nextFrameX;
       private int nextFrameY;
       private int frameDistance;
    }
      

  9.   

    javax.swing.JTextPane
    JTextPane是swing文本组件的卡迪拉克:)
    ---摘自java2 图形设计卷II Swing技术 p939
      

  10.   

    各位大狭您们说的都有道理,但是我最需要的是能够控制单个字符的颜色
    如果abcd,如何控制a为黑色,b为红色,c为绿色d为蓝色等。请各们帮忙,告诉我属性,如果100分不够,我在另开帖子送分。
    急呀,在线等待
    !!!
      

  11.   

    比較簡單的方法是將單個字符都用jlabel來顯示~~~
      

  12.   

    將單個字符都用jlabel來顯示,非累死不可,来坐上swing文本组件的卡迪拉克
    兜兜风吧
    这个可以显示JButton之类的控件,图片,各种颜色的文字,各种字体的文字,各种大小的文字。不过为了显示图片,你要有一个image.gif在当前目录下。import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.*;           
    import java.awt.event.*;     
    import java.net.URL;
    import java.io.IOException;public class TextSamplerDemo extends JFrame
    {                       
        private String newline = "\n";    protected JLabel actionLabel;    public TextSamplerDemo() {
            //Create a text pane.
            JTextPane textPane = createTextPane();
            getContentPane().add(new JScrollPane(textPane));
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setBounds(100,100,400,400);
    show();
        }    private JTextPane createTextPane() {
            JTextPane textPane = new JTextPane();
            String[] initString =
                    { "This is an editable JTextPane, ", //regular
                      "another ", //italic
                      "styled ", //bold
                      "text ", //small
                      "component, ", //large
                      "which supports embedded components..." + newline,//regular
                      " " + newline, //button
                      "...and embedded icons..." + newline, //regular
                      " ",  //icon
                      newline + "JTextPane is a subclass of JEditorPane that " +
                        "uses a StyledEditorKit and StyledDocument, and provides " +
                        "cover methods for interacting with those objects.",
    "red","blue","green"
                     };        String[] initStyles = 
                    { "regular", "italic", "bold", "small", "large",
                      "regular", "button", "regular", "icon",
                      "regular", "red", "blue", "green"
                    };        initStylesForTextPane(textPane);        Document doc = textPane.getDocument();        try {
                for (int i=0; i < initString.length; i++) {
                    doc.insertString(doc.getLength(), initString[i],
                                     textPane.getStyle(initStyles[i]));
                }
            } catch (BadLocationException ble) {
                System.err.println("Couldn't insert initial text.");
            }        return textPane;
        }    protected void initStylesForTextPane(JTextPane textPane) {
            //Initialize some styles.
            Style def = StyleContext.getDefaultStyleContext().
                                            getStyle(StyleContext.DEFAULT_STYLE);        Style regular = textPane.addStyle("regular", def);
            StyleConstants.setFontFamily(def, "SansSerif");        Style s = textPane.addStyle("italic", regular);
            StyleConstants.setItalic(s, true);        s = textPane.addStyle("bold", regular);
            StyleConstants.setBold(s, true);        s = textPane.addStyle("small", regular);
            StyleConstants.setFontSize(s, 10);        s = textPane.addStyle("large", regular);
            StyleConstants.setFontSize(s, 16);        s = textPane.addStyle("icon", regular);
            StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);
            StyleConstants.setIcon(s, new ImageIcon("image.gif"));        s = textPane.addStyle("button", regular);
            StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);
            JButton button = new JButton("Click Me");
            button.setMargin(new Insets(0,0,0,0));
            button.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    Toolkit.getDefaultToolkit().beep();
                }
            });
            StyleConstants.setComponent(s, button);        s = textPane.addStyle("red", regular);
            StyleConstants.setFontSize(s, 10);
    StyleConstants.setForeground(s, new Color(255, 0, 0));        s = textPane.addStyle("blue", regular);
            StyleConstants.setFontSize(s, 10);
    StyleConstants.setForeground(s, new Color(0, 0, 255));        s = textPane.addStyle("green", regular);
            StyleConstants.setFontSize(s, 10);
    StyleConstants.setForeground(s, new Color(0, 255, 0));    }
    public static void main(String s[])
    {new TextSamplerDemo();}
    }