2013-05-09 6 views
0

사용자가 프로그램을 종료 한 후에 버튼이 클릭되도록하려면 어떻게해야합니까?버튼 클릭 유지 클릭

JTextArea's 텍스트를 빨간색으로 설정하는이 옵션 (JButton)이 있다고 가정 해 보겠습니다. 사용자가 버튼을 클릭 한 다음 프로그램을 종료합니다. 사용자가 프로그램을 다시 열면 텍스트가 빨간색으로 표시되어 버튼이 계속 클릭됩니다. 그 예를 얻을 수없는 경우

, 내가 당신에게 또 다른 하나를 보여주지 :

나는 JButtonJLabel 있습니다. 버튼을 클릭하면 JLabel의 배경이 파란색으로 바뀝니다. 사용자가 버튼을 클릭 한 다음 프로그램을 종료합니다. 사용자가 프로그램을 다시 열면 버튼이 이미 클릭되었으므로 JLabel의 배경색이 파란색입니다.

내가 할 수있는 방법이 있습니까?

편집 : 외부 파일을로드하지 않고도 할 수 있으면 좋겠다.

편집 2 : 나는 Preference을 사용하는 것을 좋아합니다. 하지만, 위의 예 중 하나에 대한 설명을 저에게 줄 수 있습니까? 나는 Java의 초보자이기 때문에, 많은 질문이 있습니다 종류입니다. 코드가 actionPerformed 버튼에 들어가는 것처럼? 그리고 어떻게 다른 종류의 정보 (JTextarea 붉은 색)를 Preferences과 함께 저장할 수 있습니까?

+0

을, 당신은 JTextArea에를 만들 때이 값을 설정할 것입니다. 'prefs.get ("영역의 이전 색상", Color.WHITE);을 실행하면됩니다. 이것은 프로그램을 처음 실행하는 경우 WHITE를 반환합니다. 그렇지 않으면 거기에 넣은 것을 반환합니다. 그리고 나서 색상이 바뀔 때마다'prefs.put'을 actionPerformed에 넣으십시오. –

+0

버튼을 클릭했을 때만 색상을 변경해야합니다. – user2228462

+0

몇 년 전에 윈도우가 있다면 레지스트리에, 리눅스를 사용한다면 파일에 환경 설정이 저장되어있다. – Marichyasana

답변

4

You should use Preferences for this. 설명이 약간 복잡합니다. 하지만 기본적으로 실행 사이에 검색 할 수있는 값을 저장합니다.

Here's a tutorial of how to use this with a JFileChooser. 여기에 내가 쓴 예는 다음과 같습니다

package com.sandbox; 

import java.util.prefs.Preferences; 

public class Sandbox { 

    public static void main(String[] args) { 
     Preferences prefs = Preferences.userNodeForPackage(Sandbox.class); 
     Integer counter = Integer.valueOf(prefs.get("counter", "0")); 
     System.out.println(counter); 
     counter++; 
     prefs.put("counter", String.valueOf(counter)); 
    } 
} 

이를 처음 실행, 그것은 "0"을 인쇄 할 수 있습니다. 다음 번에 실행하면 "1"이 인쇄됩니다.

+0

+1 환경 설정에 대해 전혀 알지 못했습니다. –

+0

+1'Integer.valueOf()'를 사용하는 대신'Integer.parseInt()'사용 : –

+0

+1 환경 설정의 경우, 'Integer.valueOf'의 경우 -1. Preferences는'get/putInt' (그리고 모든 프리미티브) 기능을 자동으로 가지므로 파싱 할 필요가 없습니다. [Preferences # getInt] (http://docs.oracle.com/javase/7/docs/api/java/util/prefs/Preferences.html#getInt%28java.lang.String,%20int%29) 및 [Preferences # putInt] (http://docs.oracle.com/javase/7/docs/api/java/util/prefs/Preferences.html#putInt%28java.lang.String,%20int%29) – MadProgrammer

1

설정을 외부 파일에 저장하십시오. 그런 다음 프로그램이 시작할 때 해당 파일을 읽고 (시도하여) 설정을 적용하십시오.

+0

앱을 항아리 또는 귀로 배포하는 경우 문제가 될 수 있습니다. 많은 실패 지점이 있습니다 (예 : 파일 경로가 OS에 무관심한 지 확인해야합니다. 파일이 없으면 어떻게됩니까? 경로가 없으면 어떻게됩니까?) 환경 설정을 사용하는 것이 더 쉬운 방법이라고 생각합니다. . –

+0

동의 함,'Preference'는 실제로 더 좋아 보입니다. 나는 그것에 대해 알지 못했고 이것은 마음에 처음 나온 것입니다. ;) – Kninnug

2

편집 2 : 나는 환경 설정을 사용하는 것을 좋아합니다. 그러나 위의 예 중 하나에 대해 examplre을 제공 할 수 있습니까? 저는 Java에서 초보자 인 입니다. 그래서 많은 질문이 있습니다. 마찬가지로, 코드는 버튼의 동작을 에 입력합니까? 그리고 어떻게 내가 환경 설정으로 다른 종류의 정보 (JTextarea foreground as red) 을 저장할 수 있습니까?

이처럼 수행하여 예를 들어

private static Preferences prefs = Preferences.userNodeForPackage(className.class); 
private JFrame frame; 
private JTextArea textArea; 

public void init() 
{ 
    frame = new JFrame(); 
    textArea = new JTextArea(); 

    // ... 

    String storedValue = prefs.get("textAreaColor", null); 
    if(storedValue != null) 
    { 
     Color color = new Color(Integer.parseInt(storedValue)); 
     textArea.setForeground(color); 
    } 

    frame.addWindowListener(new WindowAdapter() 
    { 
     @Override 
     public void windowClosed(WindowEvent e) 
     { 
      Color color = textArea.getForeground(); 
      int rgb = color.getRGB(); 
      prefs.put("textAreaColor", Integer.toString(rgb)); 
     } 
    }); 

    // ... 
} 
+1

+1 환경 설정; 변환을 최소화하기 위해서'getInt()'와'putInt()'도 고려해야한다. – trashgod