你們能幫我嗎
像輸入 1 或 2 檢查顏色 RED 如果兩個檢查輸入檢查變成綠色
它用于Java中的XNOR門邏輯門
我不知道如何為我的大學做到這一點,但他們不教我如何做到這一點,我找不到一個好的檔案
我嘗試了很多東西,但是當我嘗試同時檢查時,它保持紅色
class XNOR extends JPanel {
JFrame frame = new JFrame("XNOR Gate");
JCheckBox input1 = new JCheckBox("Input 1");
JCheckBox input2 = new JCheckBox("Input 2");
JPanel outputPanel = new Box(Color.PINK);
public XNOR() {
input1.addActionListener(actionEvent -> {
updateOutputState1();
});
input2.addActionListener(actionEvent -> {
updateOutputState1();
});
input1.addActionListener(actionEvent -> {
updateOutputState();
});
input2.addActionListener(actionEvent -> {
updateOutputState();
});
createFrame();
}
private void createFrame() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
JPanel inputPanel = new JPanel();
inputPanel.add(input1);
inputPanel.add(input2);
frame.add(inputPanel);
frame.add(outputPanel);
frame.setSize(300, 300);
frame.setVisible(true);
}
private void updateOutputState() {
if(input1.isSelected() && input2.isSelected()){
frame.remove(outputPanel);
this.outputPanel = new Box(Color.GREEN);
frame.add(outputPanel);
}
else {
frame.remove(outputPanel);
this.outputPanel = new Box(Color.RED);
frame.add(outputPanel);
}
frame.revalidate();
frame.repaint();
}
private void updateOutputState1() {
if(input1.isSelected() || input2.isSelected()){
frame.remove(outputPanel);
this.outputPanel = new Box(Color.RED);
frame.add(outputPanel);
}
else {
frame.remove(outputPanel);
this.outputPanel = new Box(Color.GREEN);
frame.add(outputPanel);
}
frame.revalidate();
frame.repaint();
}
}
class Box extends JPanel {
Color color;
public Box(Color color) {
this.color = color;
}
public Dimension getPreferredSize() {
return new Dimension(200,200);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
g2.setPaint(color);
Rectangle2D rect=new Rectangle2D.Double(20,20,200,200);
g2.draw(rect);
g2.fill(rect);
}
}
class RunXNOR {
public static void main(String[] args) {
new XNOR();
}
}
uj5u.com熱心網友回復:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
class AndGate extends JPanel {
JFrame frame = new JFrame("And Gate");
JCheckBox input1 = new JCheckBox("Input 1");
JCheckBox input2 = new JCheckBox("Input 2");
Box outputPanel = new Box();
public AndGate() {
input1.addActionListener(actionEvent -> {
updateOutputState();
});
input2.addActionListener(actionEvent -> {
updateOutputState();
});
createFrame();
}
private void createFrame() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
JPanel inputPanel = new JPanel();
inputPanel.add(input1);
inputPanel.add(input2);
frame.add(inputPanel);
outputPanel.repaint();
frame.add(outputPanel);
frame.setSize(300, 300);
frame.setVisible(true);
}
private void updateOutputState() {
if(input1.isSelected() && input2.isSelected()) {
this.outputPanel.changeColor(Color.GREEN);
} else {
this.outputPanel.changeColor(Color.RED);
}
}
}
class Box extends JPanel {
Graphics2D g2;
Color color = Color.RED;
Rectangle2D rect=new Rectangle2D.Double(20,20,200,200);
public Box() {
}
public Dimension getPreferredSize() {
return new Dimension(200,200);
}
public void changeColor(Color color) {
this.color = color;
g2.setPaint(color);
g2.fill(rect);
this.repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g2 = (Graphics2D) g;
g2.setPaint(color);
g2.draw(rect);
g2.fill(rect);
}
}
class RunAndGate {
public static void main(String[] args) {
new AndGate();
}
}
uj5u.com熱心網友回復:
不要擴展JFrame,而是擴展JPanel。這可以作為您的輸出面板。然后只需將復選框和小面板添加到該主面板。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
class AndGate extends JPanel {
JFrame frame = new JFrame("And Gate");
JCheckBox input1 = new JCheckBox("Input 1");
JCheckBox input2 = new JCheckBox("Input 2");
JPanel output = new JPanel();
public AndGate() {
input1.addActionListener(actionEvent -> {
updateOutputState();
});
input2.addActionListener(actionEvent -> {
updateOutputState();
});
createFrame();
}
private void createFrame() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
output.setPreferredSize(new Dimension(200,200));
output.setVisible(true);
output.setBackground(Color.red);
add(input1);
add(input2);
add(output);
frame.add(this);
frame.pack();
frame.setLocationRelativeTo(null); // center on screen
frame.setVisible(true);
repaint();
}
public Dimension getPreferredSize() {
return new Dimension(300, 300);
}
private void updateOutputState() {
if(input1.isSelected() && input2.isSelected()) {
output.setBackground(Color.green);
} else {
output.setBackground(Color.red);
}
}
}
public class RunAndGate {
public static void main(String[] args) {
new AndGate();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529930.html
標籤:爪哇摇摆
