如何使用类扩展的JPanel对象?

时间:2013-05-22 00:46:17

标签: java swing object jpanel

我有一个班级Main,我正在调用所有扩展JPanel的班级。所以,就这样做:

Frame.add(new JPanel)

知道,这样的课程延伸JPanel。但是,我不能在该类中使用对象JPanel。我尝试使用new创建该类的对象,但它不能添加一些组件。只是工作方式:add,因为它是一个扩展类。

主类:

private void initialize() 
{

    tab = new JTabbedPane();
    frame.add(new JScrollPane(tab));
    frame.setTitle(TITLE);
    frame.setSize(800,500);
    frame.add(new ToolBar);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setJMenuBar(getJMenuBar());
    frame.setVisible(true);



}

在本课程中,我将其称为Toolbar课程,并将其添加到JFrame

我的工具栏类:

public class ToolBar extends JPanel {

private JToolBar toolbar;
private JButton icon;

/**
 * 
 * @param tab
 */
public ToolBar()
{

    setLayout(new BorderLayout());
    add(setJToolBar(),BorderLayout.NORTH); // add JToolbar to panel
    setBackground(getColor()); // sets up color for panel.



}

/**
 * Sets setJButtonNewFileIcon with icon
 * @return
 * JButton
 */
private JButton setJButtonNewFileIcon()
{
    icon = new JButton();
    icon.setBorder(border);
    icon.setBackground(getColor());
    icon.setToolTipText("New File");
    icon.setIcon(new ImageIcon(getClass().getClassLoader().getResource("icons/new.png")));

    return icon;

}

现在,我要创建一个ActionListener进行搜索。所以,我想将ActionListener添加到JPanelToolBar)。但是,我没有那个类的对象。

2 个答案:

答案 0 :(得分:2)

  

我创建了ActionListener

使用Action封装JToolBar组件的功能,如example中所述。

image

答案 1 :(得分:1)

您必须扩展JPanel才能满足您的需求:

class SpecialPanel extends JPanel{

  public SpecialPanel(){
    super();
    // some more logic in constructor 
  }

  public void paintComponent(Graphics g){
    super.paintComponent(g);
    // override paint() for example
  }

}

然后您可以在其他地方使用自定义JPanel

JFrame f = new JFrame("Hello World");
f.add(new SpecialPanel());