簡體   English   中英

JComboBox返回索引值

[英]JComboBox return index value

我最近一直在嘗試編寫游戲,並且一直在編寫GUI。 由於我是一名新程序員,並且希望保持簡單,因此我只想使用分辨率選擇器(可能稍后使用全屏顯示)。 我有CB,我有一個動作偵聽器來返回值,還有一個按鈕來替代新的分辨率測量值。 但是,每次我運行代碼時,我都嘗試更改分辨率,但沒有任何反應。

有人有想法么?

而且,我想知道如何做到這一點,以便在首次運行時就有一個股票分辨率,但是它會保存您選擇的分辨率。

謝謝!

插口

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

            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM