Java 使用ImageIcon刷新JButton的方法有哪些?
正如标题所说,除了Java 使用ImageIcon刷新JButton的方法有哪些?,java,swing,jbutton,repaint,Java,Swing,Jbutton,Repaint,正如标题所说,除了repaint()、validate()和invalidate(),还有什么方法可以重新绘制JButton?我用这些重新画我的按钮,但它仍然是一样的。这是我的密码: package buttonrepaint; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.ut
repaint()
、validate()
和invalidate()
,还有什么方法可以重新绘制JButton
?我用这些重新画我的按钮,但它仍然是一样的。这是我的密码:
package buttonrepaint;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
public class Buttonrepaint {
JFrame Card = new JFrame();
GridBagConstraints c = new GridBagConstraints();
Border etch = BorderFactory.createEtchedBorder(Color.white,Color.gray);
public static String buttonname;
public static String num1=""; public static String num2=""; public static String num3="";
public static int flagnum1=1, flagnum2=1, flagnum3=1;
JButton btn_1; JButton btn_2; JButton btn_3;
static int buttonGroup=1;
int stat = 0;
public static ArrayList<HashMap<String, String>> prodbutton = getProductsButton(buttonGroup);
public Buttonrepaint(){
Card.setVisible(true);
Card.setSize(522,500);
Card.setTitle("Frequency Distribution");
Card.setResizable(false);
final Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
int x=(int)((dimension.getWidth() - Card.getWidth())/4);
int y=(int)((dimension.getHeight() - Card.getHeight())/2);
Card.setLocation(x, y);
Card.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
FlowLayout flow_1 = new FlowLayout(FlowLayout.RIGHT,1,1);
final JPanel panel_1 = new JPanel();
panel_1.setBackground(Color.WHITE);
panel_1.setBorder(new EmptyBorder(10, 10, 10, 10));
panel_1.setLayout(flow_1);
final JButton btnGroup3 = new JButton("Next");
//btnGroup3.setIcon(new ImageIcon("more_buttons\\yellow.png"));
//btnGroup3.setBorderPainted(false);
// btnGroup3.setFocusPainted(false);
// btnGroup3.setContentAreaFilled(false);
btnGroup3.setHorizontalTextPosition(JButton.CENTER);
btnGroup3.setFont(new Font("Calibri", Font.PLAIN, 18));
btnGroup3.setPreferredSize(new Dimension(80, 80));
btnGroup3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
buttonGroup++;
if(prodbutton==null)
{
btnGroup3.setText("Back");
prodbutton.clear();
stat=1;
btn_1.invalidate();
}
else
{
System.out.println("EMPTY!!!!!");
buttonGroup--;
stat=0;
}
}
});
panel_1.add(btnGroup3);
try{
num1=Capitalize(prodbutton.get(0).get("prodname"));
if(prodbutton.get(0).get("butstatus").equals("0"))
{flagnum1=0;}
}catch (Exception e)
{flagnum1=0;}
try{
num2=Capitalize(prodbutton.get(1).get("prodname"));
if(prodbutton.get(1).get("butstatus").equals("0"))
{flagnum2=0;}
}catch (Exception e)
{flagnum2=0;}
try{
num3=Capitalize(prodbutton.get(2).get("prodname"));
if(prodbutton.get(2).get("butstatus").equals("0"))
{flagnum3=0;}
}catch (Exception e)
{flagnum3=0;}
btn_1 = new JButton("<html><p align=center>"+num1+"</p></html>");
//btn_1.setIcon(new ImageIcon("more_buttons\\lightblue.png"));
//btn_1.setBorderPainted(false);
//btn_1.setFocusPainted(false);
//btn_1.setContentAreaFilled(false);
btn_1.setHorizontalTextPosition(JButton.CENTER);
btn_1.setFont(new Font("Calibri", Font.BOLD, 14));
btn_1.setPreferredSize(new Dimension(80, 80));
if(flagnum1==0)
{ btn_1.setEnabled(false); }
btn_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try{
if(flagnum1==1)
{
if(num1!=null)
{
buttonname = prodbutton.get(0).get("prodname");
//quantity_panel qp = new quantity_panel();
}
}
if (stat==1)
{
buttonname=buttonname;
//quantity_panel qp = new quantity_panel();
}
}catch (Exception e) {System.out.println("Error~");}
}
});
panel_1.add(btn_1);
btn_2 = new JButton("<html><p align=center>"+num2+"</p></html>");
//btn_2.setIcon(new ImageIcon("more_buttons\\lightblue.png"));
//btn_2.setBorderPainted(false);
// btn_2.setFocusPainted(false);
// btn_2.setContentAreaFilled(false);
btn_2.setHorizontalTextPosition(JButton.CENTER);
btn_2.setFont(new Font("Calibri", Font.BOLD, 14));
btn_2.setPreferredSize(new Dimension(80, 80));
if(flagnum2==0)
{ btn_2.setEnabled(false); }
btn_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try{
if(flagnum2==1)
{
if(num2!=null)
{
buttonname = prodbutton.get(1).get("prodname");
//quantity_panel qp = new quantity_panel();
}
}
}catch (Exception e) {}
}
});
panel_1.add(btn_2);
btn_3 = new JButton("<html><p align=center>"+num3+"</p></html>");
//btn_3.setIcon(new ImageIcon("more_buttons\\lightblue.png"));
//btn_3.setBorderPainted(false);
//btn_3.setFocusPainted(false);
//btn_3.setContentAreaFilled(false);
//btn_3.setHorizontalTextPosition(JButton.CENTER);
btn_3.setFont(new Font("Calibri", Font.BOLD, 14));
btn_3.setPreferredSize(new Dimension(80, 80));
if(flagnum3==0)
{ btn_3.setEnabled(false); }
btn_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try{
if(flagnum3==1)
{
if(num3!=null)
{
buttonname = prodbutton.get(2).get("prodname");
//quantity_panel qp = new quantity_panel();
}
}
}catch (Exception e) {}
}
});
panel_1.add(btn_3);
Card.add(panel_1);
}
public static String Capitalize(String text)
{
String tmp[] = text.split(" ");
int ctr=tmp.length;
if(tmp.length>3)
{ctr=3;}
text="";
for(int i=0; i<ctr; i++)
{
String firstLetter = tmp[i].substring(0,1).toUpperCase();
String restLetters = tmp[i].substring(1).toLowerCase();
String converted = firstLetter + restLetters;
if (converted.length()>6)
{
converted = converted.substring(0,6)+"..";
}
if(i!=(ctr-1))
{
text = text+converted+"<br/>";
}
else
{
text = text+converted;
}
}
return text;
}
public static ArrayList<HashMap<String, String>> getProductsButton(int groupnum) {
ArrayList<HashMap<String, String>> prodbutton = new ArrayList<HashMap<String, String>>();
HashMap<String, String> tmp = new HashMap<String,String>();
tmp.put("A","A");
tmp.put("B","B");
tmp.put("C","C");
prodbutton.add(tmp);
return prodbutton;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Buttonrepaint test = new Buttonrepaint();
}
});
}
}
包装按钮重新喷漆;
导入java.awt.*;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.HashMap;
导入javax.swing.*;
导入javax.swing.border.border;
导入javax.swing.border.EmptyBorder;
公共类按钮油漆{
JFrame卡=新JFrame();
GridBagConstraints c=新的GridBagConstraints();
边框蚀刻=BorderFactory.createEtchedBorder(颜色.白色,颜色.灰色);
公共静态字符串按钮名;
公共静态字符串num1=“”;公共静态字符串num2=“”;公共静态字符串num3=“”;
公共静态int flagnum1=1,flagnum2=1,flagnum3=1;
按钮btn_1;按钮btn_2;按钮btn_3;
静态int按钮组=1;
int stat=0;
公共静态ArrayList prodbutton=getProductsButton(buttonGroup);
公共按钮油漆(){
设置为可见(真);
卡片设置尺寸(522500);
卡片。设置标题(“频率分布”);
卡片。可设置大小(假);
final Toolkit=Toolkit.getDefaultToolkit();
维度=Toolkit.getDefaultToolkit().getScreenSize();
int x=(int)((dimension.getWidth()-Card.getWidth())/4);
int y=(int)((dimension.getHeight()-Card.getHeight())/2);
卡片设置位置(x,y);
Card.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
FlowLayout flow_1=新的FlowLayout(FlowLayout.RIGHT,1,1);
最终JPanel面板_1=新JPanel();
面板1.立根背景(颜色:白色);
面板_1.新订单(新的清空订单(10,10,10,10));
面板1.设置布局(流程1);
最终JButton btnGroup3=新JButton(“下一步”);
//btnGroup3.setIcon(新的图像图标(“更多按钮\\yellow.png”);
//btnGroup3.1(假);
//btnGroup3.设置焦点已绘制(假);
//btnGroup3.setContentAreaFilled(false);
btnGroup3.setHorizontalTextPosition(JButton.CENTER);
btnGroup3.setFont(新字体(“Calibri”,Font.PLAIN,18));
btnGroup3.setPreferredSize(新维度(80,80));
btnGroup3.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0){
按钮组++;
如果(prodbutton==null)
{
btnGroup3.setText(“返回”);
prodbutton.clear();
stat=1;
btn_1.invalidate();
}
其他的
{
System.out.println(“空!!!”;
按钮组--;
stat=0;
}
}
});
面板1.添加(BTN组3);
试一试{
num1=大写(prodbutton.get(0.get(“prodname”));
if(prodbutton.get(0.get(“butstatus”).equals(“0”))
{flagnum1=0;}
}捕获(例外e)
{flagnum1=0;}
试一试{
num2=大写(prodbutton.get(1.get(“prodname”));
if(prodbutton.get(1.get(“butstatus”).equals(“0”))
{flagnum2=0;}
}捕获(例外e)
{flagnum2=0;}
试一试{
num3=大写(prodbutton.get(2.get(“prodname”));
if(prodbutton.get(2.get(“butstatus”).equals(“0”))
{flagnum3=0;}
}捕获(例外e)
{flagnum3=0;}
btn_1=新的JButton(“”+num1+”
”;
//btn_1.设置图标(新图像图标(“更多按钮\\lightblue.png”);
//btn_1.图1(假);
//btn_1.设置焦点已上色(假);
//btn_1.设置内容区域已填充(假);
btn_1.设置水平文本位置(JButton.CENTER);
btn_1.设置字体(新字体(“Calibri”,Font.BOLD,14));
btn_1.设置首选尺寸(新尺寸(80,80));
如果(flagnum1==0)
{btn_1.setEnabled(false);}
btn_1.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0){
试一试{
如果(flagnum1==1)
{
如果(num1!=null)
{
buttonname=prodbutton.get(0.get(“prodname”);
//数量面板qp=新数量面板();
}
}
如果(stat==1)
{
按钮名称=按钮名称;
//数量面板qp=新数量面板();
}
}catch(异常e){System.out.println(“Error~”);}
}
});
面板1.添加(btn_1);
btn_2=新的JButton(“”+num2+”
”;
//btn_2.setIcon(新图像图标(“更多按钮\\lightblue.png”);
//btn_2.已涂漆(假);
//btn_2.设置焦距(假);
//btn_2.设置内容区域已填充(假);
btn_2.设置水平文本位置(JButton.CENTER);
btn_2.setFont(新字体(“Calibri”,Font.BOLD,14));
btn_2.设置首选尺寸(新尺寸(80,80));
如果(flagnum2==0)
{btn_2.setEnabled(false);}
btn_2.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0){
试一试{
如果(flagnum2==1)
{
如果(num2!=null)
{
buttonname=prodbutton.get(1.get(“prodname”);
//数量面板qp=新数量面板();
}
}
}捕获(例外e){}
}
});
面板1.添加(btn_2);
btn_3=新的JButton(“”+num3+”
”;
//btn_3.设置图标(新图像图标(“更多按钮\\lightblue.png”);
//btn_3.已涂漆(假);
//btn_3.设置聚焦(假);
//btn_3.设置内容区域已填充(假);
//btn_3.设置水平文本位置(JButton.CENTER);
btn_3.setFont(新字体(“Calibri”,Font.BOLD,14));
btn_3.设置首选尺寸(新尺寸(80,80));
如果(f)
public void actionPerformed(ActionEvent arg0) {
buttonGroup++;
if(prodbutton!=null)
{
btnGroup3.setText("Back");
prodbutton.clear();
stat=1;
btn_1.repaint(); // button here should refresh
}
else
{
System.out.println("EMPTY!!!!!");
buttonGroup--;
stat=0;
}
}
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(400, 80);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
final Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());
JButton buttonA = new JButton("A");
JButton buttonB = new JButton("B");
JButton buttonC = new JButton("C");
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(buttonA);
buttonGroup.add(buttonB);
buttonGroup.add(buttonC);
ButtonGroupVisibilityToggleChange toggleChange = new ButtonGroupVisibilityToggleChange();
ButtonGroupToggleAction toggleAction = new ButtonGroupToggleAction(
buttonGroup, toggleChange);
JButton buttonGroupVisibilityButton = new JButton(toggleAction);
contentPane.add(buttonGroupVisibilityButton);
contentPane.add(buttonA);
contentPane.add(buttonB);
contentPane.add(buttonC);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
interface ButtonGroupToggleChange {
public boolean toggle(ButtonGroup buttonGroup, boolean actualToggleState);
}
class ButtonGroupVisibilityToggleChange implements ButtonGroupToggleChange {
public boolean toggle(ButtonGroup buttonGroup, boolean actualToggleState) {
boolean nextVisibleState = !actualToggleState;
Enumeration<AbstractButton> buttons = buttonGroup.getElements();
while (buttons.hasMoreElements()) {
AbstractButton abstractButton = buttons.nextElement();
abstractButton.setVisible(nextVisibleState);
Container parent = abstractButton.getParent();
if (parent != null) {
parent.revalidate();
}
}
return nextVisibleState;
}
}
class ButtonGroupToggleAction extends AbstractAction {
private static final long serialVersionUID = -1345619745031378545L;
private ButtonGroup buttonGroup;
private boolean toggleState = true;
private String toggleOnName = "Hide";
private String toogleOffName = "Show";
private ButtonGroupToggleChange buttonGroupToggleChange;
public ButtonGroupToggleAction(ButtonGroup buttonGroup,
ButtonGroupToggleChange buttonGroupToggleChange) {
this.buttonGroup = buttonGroup;
this.buttonGroupToggleChange = buttonGroupToggleChange;
executeToggleButtonChange();
}
public void actionPerformed(ActionEvent e) {
executeToggleButtonChange();
}
private void executeToggleButtonChange() {
toggleState = buttonGroupToggleChange.toggle(buttonGroup, toggleState);
setToggleName(toggleState);
}
public String getToggleOnName() {
return toggleOnName;
}
public void setToggleOnName(String toggleOnName) {
this.toggleOnName = toggleOnName;
setToggleName(toggleState);
}
public String getToogleOffName() {
return toogleOffName;
}
public void setToogleOffName(String toogleOffName) {
this.toogleOffName = toogleOffName;
setToggleName(toggleState);
}
private void setToggleName(boolean visible) {
if (visible) {
putValue(Action.NAME, toggleOnName);
} else {
putValue(Action.NAME, toogleOffName);
}
}
}