gpt4 book ai didi

java - JComboBox返回索引值

转载 作者:行者123 更新时间:2023-11-30 03:16:08 25 4
gpt4 key购买 nike

我最近一直在尝试编写一个游戏,并且一直在编写 GUI 代码。由于我是一名新程序员,并且希望保持简单,因此我只想使用分辨率选择器(也许稍后会使用全屏)。我有 CB,有一个用于返回值的 Action 监听器,以及一个用于替换新分辨率测量值的按钮。但是,每次运行代码时,我都会尝试更改分辨率,但没有任何反应。

大家有什么想法吗?

而且,我想知道如何做到这一点,以便在第一次运行时有一个库存分辨率,但随后它会保存您选择的分辨率。

谢谢!

jack

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import java.util.Scanner;


public class GUI_Test{

private JPanel window;
private JPanel settings;
private JFrame main;
private JFrame optionsScreen;
private JLabel headerLabel;
private JLabel optionsLabel;
private JLabel resolution;
private JComboBox resolutonOption;
String[] resolutionOptions = new String[] {
"640x480", "1024x768", "1366x768", "1600x900", "1920x1080"
};
int tempResX, tempResY, res;
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int resX = gd.getDisplayMode().getWidth();
int resY = gd.getDisplayMode().getHeight();

public GUI_Test(){
prepareGUI();
}
public static void main(String[] args) {
GUI_Test GUI = new GUI_Test();
GUI.showGUIDemo();
}
private void showGUIDemo() {
JButton exit = new JButton("EXIT");
JButton options = new JButton("OPTIONS");
JButton back = new JButton("BACK");
JButton apply = new JButton("APPLY");
JComboBox <String> resolutionOption = new JComboBox<>(resolutionOptions);

exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});

options.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
optionsScreen.setVisible(true);
settings.setVisible(true);
window.setVisible(false);
main.setVisible(false);
}
});

back.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
optionsScreen.setVisible(false);
settings.setVisible(false);
window.setVisible(true);
main.setVisible(true);
}
});

resolutionOption.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
res = resolutionOption.getSelectedIndex();

switch (res) {
case 0:
tempResX = 640;
tempResY = 480;
break;
case 1:
tempResX = 1024;
tempResY = 768;
break;
case 2:
tempResX = 1366;
tempResY = 768;
break;
case 3:
tempResX = 1600;
tempResY = 900;
break;
case 4:
tempResX = 1920;
tempResY = 1080;
break;
}
}
});

apply.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resX = tempResX;
resY = tempResY;
}
});

window.add(exit);
window.add(options);
settings.add(back);
settings.add(resolutionOption);
settings.add(apply);

main.setVisible(true);
}
private void prepareGUI() {
main = new JFrame("Basic GUI");
main.setSize(resX, resY);
main.setLayout(new GridLayout(3,1));
main.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});

optionsScreen = new JFrame("Options");
optionsScreen.setSize(resX, resY);
optionsScreen.setLayout(new GridLayout(4,1));
optionsScreen.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});

headerLabel = new JLabel("AGame", JLabel.CENTER);
headerLabel.setSize(100, 50);

optionsLabel = new JLabel("Settings", JLabel.CENTER);
optionsLabel.setSize(100, 50);
resolution = new JLabel("Resolution", JLabel.CENTER);

window = new JPanel();
window.setLayout(new FlowLayout());

settings = new JPanel();
settings.setLayout(new FlowLayout());

main.add(headerLabel);
main.add(window);
main.setVisible(true);

optionsScreen.add(optionsLabel);
optionsScreen.add(settings);
optionsScreen.add(resolution);

optionsScreen.setVisible(false);
settings.setVisible(false);
}

}

最佳答案

更改分辨率后应调用setSize(),然后为主框架调用setVisible(true)。如果您想隐藏选项屏幕窗口,请调用 setVisible(false)dispose() 方法。

apply.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resX = tempResX;
resY = tempResY;
main.setSize(resX, resY);// apply resolution
main.setVisible(true);
//optionsScreen.setVisible(false); // hide optionscreen frame

}
});

关于java - JComboBox返回索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32540145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com