私は同様の質問をいくつか見てきましたが、この作業を行うことはできませんでした。私は時間を表示していて、4に数えてやり直すカウンタを追加しましたが、最初の背景色を設定することしかできません。私はここで何が欠けていますか? if文をいくつかの場所に置いてみました。色の変更を除くすべてがうまくいきます。フレームにJPanel
を追加することによりボタンを押すたびにJPanelの背景色を変更しようとしています
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TimeFrame extends JFrame {
private static final int FRAME_WIDTH = 250;
private static final int FRAME_HEIGHT = 200;
private JButton CurrentTime;
private JLabel CurrentTimeLabel;
private JTextField CurrentTimeField;
private int click;
private JTextField clicktest;
public TimeFrame() {
CurrentTimeLabel = new JLabel("The Current Time is: ");
createTextField();
createButton();
createPanel();
setSize(FRAME_WIDTH, FRAME_HEIGHT);
setSize(250, 200);
initialize();
}
private void initialize()
{
click = 0;
}
private void createTextField()
{
final int FIELD_WIDTH = 10;
CurrentTimeField = new JTextField(FIELD_WIDTH);
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
CurrentTimeField.setText("" + dateFormat.format(now));
clicktest = new JTextField(FIELD_WIDTH);
clicktest.setText(" " + click);
}
private void createButton()
{
CurrentTime = new JButton("Display Current Time");
ActionListener listener = new AddCurrentTimeListener();
CurrentTime.addActionListener(listener);
}
private void createPanel()
{
JPanel panel = new JPanel();
//panel.addActionListener(backgroundListener);
panel.add(CurrentTimeLabel);
panel.add(CurrentTimeField);
panel.add(CurrentTime);
panel.add(clicktest);
//int click = 0;
if (click == 0){
panel.setBackground(Color.ORANGE);
}
else if (click == 1) {
panel.setBackground(Color.YELLOW);
}
else if (click == 2) {
panel.setBackground(Color.BLUE);
}
else if (click == 3) {
panel.setBackground(Color.GREEN);
}
else if (click == 4) {
panel.setBackground(Color.PINK);
}
add(panel);
}
class AddCurrentTimeListener implements ActionListener
{
public void actionPerformed(ActionEvent event){
new java.util.Date();
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
CurrentTimeField.setText("" + dateFormat.format(now));getClass();
if (click < 4){
click++;
} else {
click = click - 4;}
clicktest.setText("" + click);getClass();
/**
if (click == 0){
panel.setBackground(Color.ORANGE);
}
else if (click == 1) {
panel.setBackground(Color.YELLOW);
}
else if (click == 2) {
panel.setBackground(Color.BLUE);
}
else if (click == 3) {
panel.setBackground(Color.GREEN);
}
else if (click == 4) {
panel.setBackground(Color.PINK);
}
*/
repaint();
}
}
}
バックグラウンドを変更するための 'createPanel'メソッドのすべてのロジックは、' ActionListener'ボタンに入る必要があります。実際にボタンをクリックすると、何かができます。 – MadProgrammer
ようこそ。 https://stackoverflow.com/help/someone-answers – c0der