写一AWT程序,在Frame中加入3个按钮(红色、绿色、蓝色)单击3个按钮,窗口的背景色发生相应改变。

写一AWT程序,在Frame中加入3个按钮(红色、绿色、蓝色)单击3个按钮,窗口的背景色发生相应改变。,第1张

首先,ColorListener的getColor方法取消,把这个方法所有语句移到构造方法中。

其次,WindouwColor中,a,b,c,p直接在定义时赋值。

再有,init()方法再稍作修改:

import java.awt.*

import javax.swing.*

public class WindouwColor extends JFrame{

JButton a=new JButton("红色")

JButton b=new JButton("蓝色")

JButton c=new JButton("绿色")

JPanel p=new JPanel()

ColorListener l=new ColorListener(a,b,c,p)

WindouwColor(){

init()

setVisible(true)

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

void init(){

// setLayout(new FlowLayout())

p.setBounds(0,0,460,360)

p.setLayout(new FlowLayout())

p.add(a)

p.add(b)

p.add(c)

a.addActionListener(l)

b.addActionListener(l)

c.addActionListener(l)

add(p,BorderLayout.CENTER)

}

}

import javax.swing.*

import java.awt.Color

import java.awt.event.*

public class ColorListener implements ActionListener{

JButton a

JButton b

JButton c

JPanel p

public ColorListener(JButton a,JButton b,JButton c,JPanel p){

this.a=a

this.b=b

this.c=c

this.p=p

}

public void actionPerformed(ActionEvent e) {

if(a==(JButton)e.getSource())

p.setBackground(Color.red)

else if(b==(JButton)e.getSource())

p.setBackground(Color.blue)

else

p.setBackground(Color.green)

}

}

public class MainClass2 {

public static void main(String[] args) {

WindouwColor win=new WindouwColor()

win.setBounds(100,100,460,360)

win.setTitle("改变窗口颜色")

}

}

java web在jtable中添加按钮的示例如下:

import java.awt.BorderLayout

import java.awt.Color

import java.awt.Component

import java.awt.Dimension

import java.awt.event.MouseAdapter

import java.awt.event.MouseEvent

import java.io.File

import javax.swing.BorderFactory

import javax.swing.ImageIcon

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JPanel

import javax.swing.JScrollPane

import javax.swing.JTable

import javax.swing.UIManager

import javax.swing.border.Border

import javax.swing.border.EmptyBorder

import javax.swing.table.AbstractTableModel

import javax.swing.table.TableCellRenderer

public class JTableButton extends JPanel {

 private JTable table

 private JScrollPane scrollPane

 private JButton[] buttons

 private String path = System.getProperty("user.dir") + File.separator

 + "images" + File.separator

 

 public JTableButton() {

  setBorder(BorderFactory.createLineBorder(Color.red, 1))

  init()

 }

 private void init() {

  String headName[] = { "Name", "age", "sex", "adress", "image" }

  

  buttons = new JButton[5]

  for(int i=0i<buttons.lengthi++){

   buttons[i] = new JButton(""+i)

  }

  Object obj[][] = {

    { "LiMing", 23, Boolean.TRUE, buttons[0],

      new ImageIcon(path + "icon.png") },

    { "ZhangSan", 25, Boolean.TRUE,buttons[1],

      new ImageIcon(path + "icon.png") },

    { "WangWu", 21, Boolean.FALSE, buttons[2],

      new ImageIcon(path + "icon.png") },

    { "LiSi", 28, Boolean.TRUE, buttons[3],

      new ImageIcon(path + "icon.png") },

    { "LuBo", 20, Boolean.FALSE, buttons[4],

      new ImageIcon(path + "icon.png") }, }

  

  table = new JTable(new MyTableModel(headName,obj))

  table.setDefaultRenderer(JButton.class, new ComboBoxCellRenderer())

  scrollPane = new JScrollPane(table)

  setLayout(new BorderLayout())

  add(scrollPane, BorderLayout.CENTER)

  addHandler()

 }

 private void addHandler(){

  //添加事件

  table.addMouseListener(new MouseAdapter(){

   public void mouseClicked(MouseEvent e) {

    System.out.println("table")

    int row = table.getSelectedRow()

    int column = table.getSelectedColumn()

    System.out.println("row="+row+":"+"column="+column)

    if(column==3){

     //处理button事件写在这里...

     System.out.println(((JButton)table.getValueAt(row, column)).getText())

    }

   }

  })

 }

 public static void main(String[] args) {

  JFrame frame = new JFrame()

  frame.add(new JTableButton())

  frame.setSize(new Dimension(800, 400))

  frame.setVisible(true)

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

 }

 class MyTableModel extends AbstractTableModel {

  private String headName[]

  private Object obj[][]

  

  public MyTableModel() {

   super()

  }

  

  public MyTableModel(String[] headName, Object[][] obj) {

   this()

   this.headName = headName

   this.obj = obj

  }

  public int getColumnCount() {

   return headName.length

  }

  public int getRowCount() {

   return obj.length

  }

  public Object getValueAt(int r, int c) {

   return obj[r][c]

  }

  public String getColumnName(int c) {

   return headName[c]

  }

  public Class<?> getColumnClass(int columnIndex) {

   return obj[0][columnIndex].getClass()

  }

  @Override

  public boolean isCellEditable(int rowIndex, int columnIndex) {

   if (columnIndex == 3 || columnIndex == 4) {

    return false

   }

   return true

  }

 }

}

class ComboBoxCellRenderer implements TableCellRenderer {

 public Component getTableCellRendererComponent(JTable table, Object value,

   boolean isSelected, boolean hasFocus, int row, int column) {

  JButton cmb = (JButton) value

  if (isSelected) {

   cmb.setForeground(table.getSelectionForeground())

   cmb.setBackground(table.getSelectionBackground())

  } else {

   cmb

     .setForeground((unselectedForeground != null) ? unselectedForeground

       : table.getForeground())

   cmb

     .setBackground((unselectedBackground != null) ? unselectedBackground

       : table.getBackground())

  }

  cmb.setFont(table.getFont())

  if (hasFocus) {

   cmb

     .setBorder(UIManager

       .getBorder("Table.focusCellHighlightBorder"))

   if (!isSelected && table.isCellEditable(row, column)) {

    Color col

    col = UIManager.getColor("Table.focusCellForeground")

    if (col != null) {

     cmb.setForeground(col)

    }

    col = UIManager.getColor("Table.focusCellBackground")

    if (col != null) {

     cmb.setBackground(col)

    }

   }

  } else {

   cmb.setBorder(noFocusBorder)

  }

  return cmb

 }

 protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1)

 private Color unselectedForeground

 private Color unselectedBackground

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11637887.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存