Java 如何使用第一帧中的按钮使一帧显示在另一帧旁边
我目前正在创建一个数字闹钟,我当前的代码创建一个框架,然后使用另一个类尝试在第一个框架的侧面创建另一个框架,该框架向用户显示一些组合框,其中填充了小时/分钟,允许用户设置闹钟。 我怎样才能有效地做到这一点? 为什么我的控制台应用程序会在当前配置中启动大量错误?以及不允许我的组合框显示 我尝试创建一个单独的类,用于继承,创建了一个实例,并将其添加到上一个框架中,使其相对靠近它打开Java 如何使用第一帧中的按钮使一帧显示在另一帧旁边,java,swing,jframe,illegalargumentexception,Java,Swing,Jframe,Illegalargumentexception,我目前正在创建一个数字闹钟,我当前的代码创建一个框架,然后使用另一个类尝试在第一个框架的侧面创建另一个框架,该框架向用户显示一些组合框,其中填充了小时/分钟,允许用户设置闹钟。 我怎样才能有效地做到这一点? 为什么我的控制台应用程序会在当前配置中启动大量错误?以及不允许我的组合框显示 我尝试创建一个单独的类,用于继承,创建了一个实例,并将其添加到上一个框架中,使其相对靠近它打开 import java.awt.Color; import java.awt.Font; import java.aw
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.LocalDateTime;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Digital_Clock extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
private static final int BTN_HEIGHT = 0;
private static final int BTN_WIDTH = 0;
private JFrame frame;
private JButton button;`enter code here`
private final int WINDOW_HEIGHT = 500;
private final int WINDOW_WIDTH = 500;
private int hours;
private int mins;
private int seconds;
private String hoursString;
private String secondsString;
private String minutesString;
public String Time = " ";
private Font timeFont = new Font("Arial", Font.CENTER_BASELINE, 60);
private Font titleFont = new Font("Arial", Font.CENTER_BASELINE, 30);
private String[] hourCombos = {"00","01","02","03","04","05","06","07","08","09"
,"10","11","12","13","14","15","16","17","18","19","20","21","22",""
+ "23","24"};
private String[] minutesCombos = {"00","01","02","03","04","05","06","07","08","09","10","11",""
+ "12","13","14","15"
,"16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"
+ "31","32","33","34","35","36","37","38","39","40"
,"41","42","43","44","45","46","47","48","49","50","51","52","53",
"54","55","56","57","58","59","60"};
public Digital_Clock() {
setFrame();
setLabel();
setButton();
updateClock();
}
public static void main(String[] args) {
new Digital_Clock();
}
public void paint(Graphics g) {
super.paint(g);
g.setFont(timeFont);
g.setColor(Color.BLUE);
g.drawString(Time, 130, 230);
}
private void setLabel() {
JLabel Header = new JLabel();
Header.setText("LDot's Digital Clock");
Header.setFont(titleFont);
Header.setBounds(110, 0, 400, 50);
Header.setVisible(true);
add(Header);
}
private void setButton() {
Button logBtn = new Button("Log Time");
Button quitBtn = new Button("Quit");
Button setAlarmBtn = new Button("Set Alarm");
Button changeBackgroundBtn = new Button("Change Background");
quitBtn.setBounds(50, 400, 100, 50);
setAlarmBtn.setBounds(350, 400, 100, 50);
changeBackgroundBtn.setBounds(170, 300, 150, 50);
logBtn.setBounds(200, 400, 100, 50);
add(setAlarmBtn);
add(changeBackgroundBtn);
add(quitBtn);
add(logBtn);
setAlarmBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
setAlarmFrame();
}
});
logBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent lb) {
System.out.println(Time);
}
});
quitBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent qt) {
// TODO Auto-generated method stub
System.exit(0);
}
});
}
private void setFrame() {
frame = new JFrame();
frame.setTitle("LDot's Digital Clock");
frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setLocation(100, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
frame.setResizable(false);
frame.setVisible(true);
frame.add(this);
}
private void setAlarmFrame() {
Alarm_Window alarmWindow = new Alarm_Window("Set An Alarm");
frame.add(alarmWindow);
alarmWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLayout(null);
JComboBox hourCombo = new JComboBox(hourCombos);
JComboBox minuteCombo = new JComboBox(minutesCombos);
hourCombo.setBounds(200,200,40,40);
minuteCombo.setBounds(300,300,40,40);
alarmWindow.add(hourCombo);
alarmWindow.add(minuteCombo);
}
private void setTime() {
hours = LocalDateTime.now().getHour();
mins = LocalDateTime.now().getMinute();
seconds = LocalDateTime.now().getSecond();
}
private void update() {
ActionListener task = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updateClock();
}
};
Timer timer = new Timer(100, task);
timer.setRepeats(false);
timer.start();
}
private void setString() {
if (seconds < 10) {
secondsString = "0";
} else {
secondsString = "";
}
if (mins < 10) {
minutesString = "0";
} else {
minutesString = "";
}
if (hours < 10) {
hoursString = "0";
} else {
hoursString = "";
}
secondsString += String.valueOf(seconds);
minutesString += String.valueOf(mins);
hoursString += String.valueOf(hours);
Time = hoursString + ":" + minutesString + ":" + secondsString;
}
private void updateClock() {
setTime();
setString();
update();
repaint();
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
public class Button extends JButton {
private String title;
private Border aBorder = new LineBorder(Color.black, 4);
Button(String title){
setText(title);
setBackground(Color.LIGHT_GRAY);
setForeground(Color.black);
setFocusable(false);
}
}
import javax.swing.JFrame;
public class Alarm_Window extends JFrame{
private String title = "Set Alarm";
private final int ALARM_WINDOW_HEIGHT= 400;
private final int ALARM_WINDOW_WIDTH = 400;
Alarm_Window(String title){
setSize(ALARM_WINDOW_HEIGHT,ALARM_WINDOW_WIDTH);
setVisible(true);
}
}`
1) 为了更快地获得更好的帮助,请添加或。2) 请参见3)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。相反,可以使用布局管理器,或者与布局填充和边框一起使用。1)为了更快地获得更好的帮助,可以添加或。2) 请参见3)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.checkNotAWindow(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at javax.swing.JFrame.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at Digital_Clock.setAlarmFrame(Digital_Clock.java:140)
at Digital_Clock.access$0(Digital_Clock.java:138)
at Digital_Clock$1.actionPerformed(Digital_Clock.java:97)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)