java swing 输入类型强制为int
时间: 2024-04-23 20:23:30 浏览: 126
Java Swing 中的输入类型并不强制为 int。根据需要,可以使用不同的输入组件来接收不同类型的输入,例如 JTextField、JFormattedTextField、JSpinner 等等。这些组件都提供了相应的方法来获取输入值,开发人员可以根据需要将这些值转换为所需的类型。同时,也可以对输入进行验证和格式化,以确保输入的正确性和一致性。
相关问题
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class s2 extends JFrame{ private JPanel p1, p2; private JButton btnBig,btn; private JComboBox cmcolor; JLabel LBcolor; s2(){ super("改变按钮的颜色"); p1 = new JPanel (new GridLayout (2,1)); p2 = new JPanel(); btnBig = new JButton("请为我选择一种背景颜色"); LBcolor = new JLabel("请选择背景颜色"); cmcolor = new JComboBox(new String[] {"粉色","橙色","绿色"}); p2.add (cmcolor); p2.add (LBcolor); p1.add(p2); cmcolor.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { int color=(int) cmcolor.getSelectedItem(); btn.setBackground(Color.pink); } }); this.add(p1) ; this.setLocation(200, 100); this.setSize(400, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[]args) { new s2(); } }
这段代码有几个错误:
1.在代码的第28行,将获取到的下拉框的值强制转换为int类型,但实际上下拉框的值类型为字符串类型,因此会出现类型不匹配的错误。
2.在代码的第29行,将按钮的背景颜色设置为Color.pink,而不是根据选中的下拉框值动态设置按钮背景颜色。
以下是修复后的代码:
```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class s2 extends JFrame{
private JPanel p1, p2;
private JButton btnBig,btn;
private JComboBox<String> cmcolor;
JLabel LBcolor;
s2(){
super("改变按钮的颜色");
p1 = new JPanel (new GridLayout (2,1));
p2 = new JPanel();
btnBig = new JButton("请为我选择一种背景颜色");
LBcolor = new JLabel("请选择背景颜色");
cmcolor = new JComboBox<>(new String[] {"粉色","橙色","绿色"});
p2.add (cmcolor);
p2.add (LBcolor);
p1.add(p2);
cmcolor.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
String color = (String) cmcolor.getSelectedItem();
switch (color) {
case "粉色":
btn.setBackground(Color.pink);
break;
case "橙色":
btn.setBackground(Color.orange);
break;
case "绿色":
btn.setBackground(Color.green);
break;
}
}
});
btn = new JButton("按钮");
p1.add(btn);
this.add(p1);
this.setLocation(200, 100);
this.setSize(400, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[]args) {
new s2();
}
}
```
修复后,可以在下拉框中选择颜色,点击按钮可以看到背景颜色随之改变。
用java写一个根据目前时间结束时间为下午五点的桌面窗口显示时分秒并于倒计时结束时强制关闭计算机
以下是 Java 代码:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CountdownTimer extends JFrame implements ActionListener {
private JLabel timeLabel;
private Timer timer;
public CountdownTimer() {
setTitle("倒计时");
setSize(300, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
timeLabel = new JLabel();
timeLabel.setFont(new Font("宋体", Font.BOLD, 30));
timeLabel.setHorizontalAlignment(SwingConstants.CENTER);
add(timeLabel, BorderLayout.CENTER);
timer = new Timer(1000, this);
timer.start();
}
public void actionPerformed(ActionEvent e) {
long currentTime = System.currentTimeMillis();
long endTime = getEndTime(currentTime);
long remainingTime = endTime - currentTime;
if (remainingTime <= 0) {
timeLabel.setText("时间到了!");
timer.stop();
shutdown();
} else {
int hours = (int) (remainingTime / 3600000);
int minutes = (int) ((remainingTime % 3600000) / 60000);
int seconds = (int) ((remainingTime % 60000) / 1000);
timeLabel.setText(String.format("%02d:%02d:%02d", hours, minutes, seconds));
}
}
private long getEndTime(long currentTime) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(currentTime);
calendar.set(Calendar.HOUR_OF_DAY, 17);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
if (calendar.getTimeInMillis() <= currentTime) {
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return calendar.getTimeInMillis();
}
private void shutdown() {
try {
Runtime.getRuntime().exec("shutdown -s -t 0");
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
new CountdownTimer().setVisible(true);
}
}
```
这个程序会在窗口中显示当前距离下午五点还有多长时间,当时间到达下午五点时,会弹出一个对话框提示用户,并且强制关闭计算机。
阅读全文