重新启动应用程序时,必须显示上次显示的颜色。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io. *;
public class The extends JFrame {
private JButton st1=new JButton("26");
public The() {
JPanel panel=new JPanel();
panel.add(st1);
st1.addActionListener(new Ac());
add(panel);
}
class Ac implements ActionListener {
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (((Component)source).getBackground().equals(Color.red)){
((Component)source).setBackground(null); //the color changing
} else {
((Component)source).setBackground(Color.red);
}
try { //Here I threw the state of the button into color1.txt. The color of the button
FileOutputStream f = new FileOutputStream("color1.txt");
ObjectOutputStream out = new ObjectOutputStream(f);
out.writeObject(st1);
System.out.println("File has been writen");
out.close();
} catch (IOException o) {
}
}
public static void main(String[] args) throws IOException {
The window = new The();
window.setVisible(true);
window.setSize(400,600);
FileInputStream fileInputStream = new FileInputStream("color1.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
}
}
现在您需要在重新启动窗口时显示关闭前的颜色。也就是说,如果按钮的颜色为红色,则显示为红色。如果按钮的颜色正常,则显示正常颜色。
首先是代码,然后是解释。
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class The extends WindowAdapter implements ActionListener, Runnable {
private static final String PATH = "color1.dat";
private Color defaultBackground;
private JButton st1;
private JFrame frame;
@Override // java.awt.event.ActionListener
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source == st1) {
Color col = st1.getBackground();
if (col == defaultBackground) {
st1.setBackground(Color.red);
}
else {
st1.setBackground(defaultBackground);
}
}
}
@Override // java.lang.Runnable
public void run() {
createAndDisplayGui();
}
@Override // java.awt.event.WindowAdapter
public void windowClosing(WindowEvent event) {
Color background = st1.getBackground();
try (FileOutputStream fos = new FileOutputStream(PATH);
ObjectOutputStream oos = new ObjectOutputStream(fos)) {
oos.writeObject(background);
}
catch (IOException xIo) {
throw new RuntimeException("Failed to save button background.", xIo);
}
}
private void createAndDisplayGui() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addWindowListener(this);
st1 = new JButton("26");
st1.addActionListener(this);
defaultBackground = st1.getBackground();
init();
JPanel panel = new JPanel();
panel.add(st1);
frame.add(panel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private void init() {
try (FileInputStream fis = new FileInputStream(PATH);
ObjectInputStream ois = new ObjectInputStream(fis)) {
Object obj = ois.readObject();
if (obj instanceof Color) {
Color bg = (Color) obj;
st1.setBackground(bg);
}
}
catch (FileNotFoundException xFileNotFound) {
// Ignore.
}
catch (ClassNotFoundException | IOException x) {
throw new RuntimeException("Failed to read saved background", x);
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new The());
}
}
main
中,我显式启动事件调度线程(EDT)。方法invokelater
的参数是实现接口java.lang.Runnable
的类的实例(该类
执行)。因此,方法invokelater
将调用类the
中的方法run
。run
(在类
中)调用方法createanddisplaygui
。在此方法中,我构建了GUI。createanddisplayGui
调用方法init
。方法init
尝试读取存储st1
的最后一个背景色的文件(即JButton
)。注意,代码使用了try-with-resources和multi-catch。还要注意,第一次运行应用程序时,文件可能不存在。因此,我忽略FileNotFoundException
st1
的背景颜色。因此,我添加了一个windowlistener。在JFrame
关闭之前调用WindowClosing
方法。Javascript(jQuery)代码 HTML/EJS代码 我读过的一些不起作用的帖子: 如何在单击按钮时通过动画显示视图? 尝试在单击按钮时显示div
链接到我正在尝试刮取的页面: https://www.nytimes.com/reviews/dining 因为这个页面有一个“show more”按钮,所以我需要Selenium自动反复单击“show more”按钮,然后以某种方式使用Beauty soup来获取页面上每个餐厅评论的链接。在下面的照片中,我想获取的链接位于https://...onigiri.html" 迄今为止的代码: 我如何
当按钮单击时,是否有任何机制显式地触发按键事件。当我单击java UI中命名为“+”的按钮时,它将显式地触发“+”键按下事件。
我一直在TkinterGUI上工作,而且是新手。现在我想使用Opencv显示一个图像,在一个单独的窗口中单击按钮,因此首先我使用askopenfilename()获取图像路径,然后将该值传递给cv2。下面是imread()代码。 图像显示在一个新窗口中,但当我试图关闭它时,Tkinter应用程序也会关闭。我需要在图像上执行一些任务,然后在不影响Tkinter应用程序的情况下按键关闭它。它可以用线程
我正在使用javascript(extensions chrome)在程序“Atom”中制作一个机器人,并希望点击按钮“添加到购物车”。我的html是。我猜我在使用值时需要这样做。怎么做?
我有2. fxml文件(stage1.fxml和stage2.fxml)和它的控制器类。 我在第一阶段有一个按钮。打开stage2的fxml。fxml单击时,上面有以下代码: 这可以很好地打开阶段2,但是阶段1仍然是打开的,我可以直接用tab键进入它并仍然使用该阶段中的按钮,我不想这样。 我怎么能。在打开stage2之前,当我按下bInstage2时,设置stage1可见(false)。fxml?