2012-11-24 53 views
1

我只在短时间内学习了Java,出于某种原因,这个小东西让我停留在当前项目上。我有jframe完成更改/删除按钮,但我需要弄清楚如何使他们的工作。我需要它在编码中实际改变它,然后删除它或在实际代码中永久更改它。更改和删除按钮的方法

package admin; 

import java.awt.*; 
import javax.swing.*; 
import javax.swing.border.*; 
import javax.swing.table.*; 
import java.awt.event.*; 

public class Project3 extends JFrame { 

    private JPanel contentPane; 
    private JTable table_1; 
    private JScrollPane scrollPane; 
    String[] columnNames = {"Restaurant", "Dish", "Type", "Price", "Rating"}; 
    Object[][] data = { 
     {"Nemo", "Vesuvio", "Pizza", new String("65kr"), new Integer(7)}, 
     {"John", "Doe", "Rowing", new Integer(3), new Boolean(true)}, 
     {"Sue", "Black", "Knitting", new Integer(2), new Boolean(false)}, 
     {"Jane", "White", "Speed reading", new Integer(20), 
      new Boolean(true)}, 
     {"Joe", "Brown", "Pool", new Integer(10), new Boolean(false)}}; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       try { 
        Project3 frame = new Project3(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public Project3() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 800, 600); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     contentPane.setLayout(new BorderLayout(0, 0)); 
     setContentPane(contentPane); 
     JPanel panel = new JPanel(); 
     contentPane.add(panel, BorderLayout.CENTER); 
     panel.setLayout(null); 
     scrollPane = new JScrollPane(); 
     scrollPane.setBounds(139, 162, 469, 420); 
     panel.add(scrollPane); 
     table_1 = new JTable(data, columnNames); 
     scrollPane.setViewportView(table_1); 
     table_1.setFillsViewportHeight(true); 
     table_1.setModel(new DefaultTableModel(new Object[][]{ 
       {"Nemo", "blah", "Pizza", "65kr", new Integer(7)}, 
       {"Nemo", "blah", "Rowing", "1 000 000kr", Boolean.TRUE}, 
       {"Sue", "blah", "Knitting", new Integer(2), Boolean.FALSE}, 
       {"Jane", "blah", "Speed reading", new Integer(20), Boolean.TRUE}, 
       {"Joe", "Brown", "Pool", new Integer(10), Boolean.FALSE}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null}, 
       {null, null, null, null, null},}, 
      new String[]{ 
       "Restaurant", "Dish", "Type", "Price", "Rating"})); 
     JButton btnChangeadd = new JButton("Change/Add"); 
     btnChangeadd.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mouseClicked(MouseEvent e) { 
       // CALL CHANGE METHOD HERE 
      } 
     }); 
     btnChangeadd.setFont(new Font("Lucida Grande", Font.PLAIN, 16)); 
     btnChangeadd.setBounds(143, 104, 175, 42); 
     panel.add(btnChangeadd); 
     JLabel lblNewLabel = new JLabel("Welcome RestaurantID"); 
     lblNewLabel.setFont(new Font("Lucida Grande", Font.PLAIN, 24)); 
     lblNewLabel.setBounds(264, 56, 260, 36); 
     panel.add(lblNewLabel); 
     JButton button = new JButton("+"); 
     button.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mouseClicked(MouseEvent e) { 
       // CALL SOMETHING HERE IF YOU WANT 
      } 
     }); 
     button.setBounds(66, 248, 40, 29); 
     panel.add(button); 
     JButton button_1 = new JButton("-"); 
     button_1.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mouseClicked(MouseEvent e) { 
      } 
     }); 
     button_1.setBounds(66, 289, 40, 29); 
     panel.add(button_1); 
     JButton btnDelete = new JButton("Delete"); 
     btnDelete.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mouseClicked(MouseEvent e) { 
       //DELETE METHOD 
      } 
     }); 
     btnDelete.setFont(new Font("Lucida Grande", Font.PLAIN, 16)); 
     btnDelete.setBounds(344, 104, 191, 42); 
     panel.add(btnDelete); 
     JButton btnLogOut = new JButton("Log out"); 
     btnLogOut.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mouseClicked(MouseEvent e) { 
      } 
     }); 
     btnLogOut.setBounds(667, 6, 117, 29); 
     panel.add(btnLogOut); 
    } 
} 
+0

1)'button_1.setBounds(66,289,40,29);'使用布局。 2)删除什么?改变什么?为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

+0

你不会在记事本中开发,对吗?原因将解释格式。 –

+0

不,我正在使用eclipse – Cameronaut

回答

2

我想你正在寻找一个ActionListener而不是MouseListener。您可以像添加MouseListener一样将actionlistener添加到JButton。

button.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
     //code you want to run when the button gets pressed 
    } 
} 

actionPerformed方法将在单击按钮时运行。下面是一个很好的写作练习者教程:http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

在这篇教程中,他们做的事情有点不同。他们有一个扩展了ActionListener并实现了actionPerformed方法的类。如果按照这种方式完成,则将整个类作为actionlistener添加到按钮。所以如果你的按钮是在扩展actionlistener的类中创建的,你应该这样做:
button.addActionListener(this);
这允许你为多个按钮设置一个actionPerformed方法。说句被点击的actionPerformed方法中的哪一个按钮,你会调用ActionEvent对象的方法的getSource像这样:
if(e.getSource() == button)
如果您需要具有类扩展的ActionListener让我知道更多的解释。

编辑:
绝对误解你在问什么。尽管如此,我仍然建议您使用mouselistener处理按钮的方式。如果你澄清你想如何改变我可能提供的帮助。

0

如果你想删除它被点击然后做BTN:

panel.remove();
panel.validate();
panel.repaint();
此外,你可以执行的操作方法内通过e.getSource()获取点击的来源。

+0

我想编辑或删除“数据”中的文本。我添加了更多的代码来显示我做得更好。 – Cameronaut