자바
-
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기2015.10.04
-
자바 JTextArea 스크롤바 자동으로 설정하기2015.10.04
-
JAVA JPasswordField 암호 값 가져오기2015.09.20
-
문자열에서 숫자만 추출하기2015.09.02
-
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기2014.12.29
-
숫자 천단위 콤마 입력하기2014.09.25
-
java 문자열 구분자로 자르기2013.10.02
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기
현재 프로젝트에 lib 폴더가 있고 start.exe 파일을 참조하게 하고 싶다면
File path = new File("lib"+File.separator+"start.exe");
그런데 프로젝트 실행할 땐 잘되는데 실행가능한 jar 파일로 export 하여 해보니 안된다..ㅠㅠ
'지식메모 > JAVA' 카테고리의 다른 글
자바 이미지 파일 포함하여 프레임바 아이콘 변경 후 실행가능한 jar 파일로 생성하기 (0) | 2015.10.15 |
---|---|
자바 스윙 프레임바 아이콘 바꾸기 (0) | 2015.10.12 |
자바 JTextArea 스크롤바 자동으로 설정하기 (0) | 2015.10.04 |
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
자바 JTextArea 스크롤바 자동으로 설정하기
자바 스윙에서 JTextArea 에서 스크롤바 자동으로 설정하는 방법
1 2 3 4 5 6 | JTextArea area= new JTextArea(); JScrollPane scrollPane = new JScrollPane(area); //스크롤판 추가 JPane.add(scrollPane); //화면에 추가 area.append(log); // 출력로그 JTextArea 출력 area.setCaretPosition(txtLog.getDocument().getLength()); // 이 코드를 append 밑에 추가해주면 항상 아래로 스크롤 된다 | cs |
'지식메모 > JAVA' 카테고리의 다른 글
자바 스윙 프레임바 아이콘 바꾸기 (0) | 2015.10.12 |
---|---|
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기 (0) | 2015.10.04 |
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기 (0) | 2014.12.29 |
JAVA JPasswordField 암호 값 가져오기
자바 스윙에서 JPasswordField 필드를 사용하면 암호입력시 * 별표로 표시할 수 있는데 이 가려지 값을 가져오는 방법
tf_pw = new JPasswordField(); tf_pw.setEchoChar('*');
이런 식으로 암호 입력시 * 별표로 가려지게 한다음
String pw = ""; //tf_pw 필드에서 패스워드를 얻어옴, char[] 배열에 저장 char[] secret_pw = tf_pw.getPassword(); //secret_pw 배열에 저장된 암호의 자릿수 만큼 for문 돌리면서 cha 에 한 글자씩 저장 for(char cha : secret_pw){ Character.toString(cha); //cha 에 저장된 값 string으로 변환 //pw 에 저장하기, pw 에 값이 비어있으면 저장, 값이 있으면 이어서 저장하는 삼항연산자 pw += (pw.equals("")) ? ""+cha+"" : ""+cha+""; }
이렇게 저장한 후 System.out.println(pw)로 찍어보면 입력된 암호가 나타난다.
'지식메모 > JAVA' 카테고리의 다른 글
자바 상대경로 지정하여 어디서나 경로 참조가능하게 하기 (0) | 2015.10.04 |
---|---|
자바 JTextArea 스크롤바 자동으로 설정하기 (0) | 2015.10.04 |
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기 (0) | 2014.12.29 |
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
문자열에서 숫자만 추출하기
해당링크
핵심 키워드 \D+
문자열 배려 첫번째는 공백이므로 split[1] 값 부터 사용하기
특히 특수문자 검색할 땐 앞에 백슬래쉬 요거 \ 추가하기
ex) ""이름"" ( 에러뜸 ) ▶ "\"이름\"" ( 따옴표도 검색가능 )
'지식메모 > JAVA' 카테고리의 다른 글
자바 JTextArea 스크롤바 자동으로 설정하기 (0) | 2015.10.04 |
---|---|
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기 (0) | 2014.12.29 |
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
Json의 이해 (0) | 2013.11.05 |
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기
파일 I/O를 이용한 텍스트 파일 생성과 읽기를 이용한 간단한 누적시간계산하기
1. 처음 시간과 끝 시간을 구한 후
-> 끝 시간 - 처음 시간 = 총 소요시간
2. 텍스트 파일 유무를 체크 한 뒤
3.파일이 없다면(처음 기록하는 시간이므로) 총 누적시간 = 총 소요시간이므로 이 시간을 totaltime.txt에 기록
4. 만약 파일이 있었다면 총 누적시간 = 이전 누적시간 + 총 소요시간이다.
-이를 다시 totaltime.txt 기록한다.(덮어 쓰게 됨)
이런 순서로 진행된다.
Time.java
import java.io.*; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; public class Time { static Date dt = new Date(); static Time timer = new Time(); static SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd, hh:mm:ss a"); static int playTimeCheck = 0; public long startTime() { long start = System.currentTimeMillis(); return start; } public long endTime() { long end = System.currentTimeMillis(); return end; } public long playTime(long l){ long longTime = 0; long end = timer.endTime(); //끝 시간 longTime = ( end - l ) / 1000; //끝 시간 빼기 처음시간 playTimeCheck = (int)longTime; // 플레이 시간 저장 System.out.println("플레이 시간 : " + (int)(longTime / 3600) + "시간 " + (int)(longTime % 3600 / 60) + "분 " + (int)(longTime % 3600 % 60) + "초"); return longTime; } public void totalTime(){ int total = 0; try { int play = playTimeCheck; //아까 계산한 플레이 시간 값 File file = new File("c:/totaltime.txt"); if(file.isFile()){ //totaltime.txt 존재 유무 체크 BufferedReader outReader = new BufferedReader(new FileReader("c:/totaltime.txt")); String read = outReader.readLine(); //누적 시간 읽기 total = Integer.parseInt(read); //읽은 값 total에 저장 total += play; //play시간과 total 더함 outReader.close(); BufferedWriter out = new BufferedWriter(new FileWriter("c:/totaltime.txt")); out.write(Integer.toString(total)); //합산된 total 값을 기록 out.close(); }else{ //파일이 없다면 BufferedWriter out = new BufferedWriter(new FileWriter("c:/totaltime.txt")); total = play; //처음에는 play시간이 곧 누적시간이므로 total에 play시간 대입 out.write(Integer.toString(total)); //파일에 기록 out.close(); } System.out.println("누적 플레이 시간 : " + ( total / 3600) + "시간 " + (total % 3600 / 60) + "분 " + (total % 3600 % 60) + "초"); } catch (IOException e) { System.err.println(e); // 에러가 있다면 메시지 출력 System.exit(1); } } }
public class TimeTest { public Time time = new Time(); //Time.java 객체선언 long startTime = 0; long endTime = 0; public void setUpGame() { startTime = time.startTime(); //시작과 동시에 시작시간 구함 } private void startPlaying() { finishGame(); } private void finishGame() { exitGame(); //끝날 때 시간 구함 } private void exitGame() { System.out.println("게임 종료"); time.totalTime(); //누적시간 계산 후 출력 } public static void main(String[] args) { DotComBust game = new DotComBust(); game.setUpGame(); game.startPlaying(); } }
대강 이런 식으로 사용가능하다..
'지식메모 > JAVA' 카테고리의 다른 글
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
---|---|
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
Json의 이해 (0) | 2013.11.05 |
대문자 소문자 서로 변환하기 (0) | 2013.10.08 |
숫자 천단위 콤마 입력하기
가격 입력할 때 천단위 마다 콤마를 넣을 수 있는 방법
String money="999999999" long value = Long.parseLong(money); DecimalFormat format = new DecimalFormat("###,###");//콤마 format.format(value); String result_int = format.format(value);
이 코드를 추가해주면 천 단위마다 콤마가 자동으로 찍힌다.
안드로이드에서 에디트 텍스트에서 숫자를 입력 받아
텍스트 뷰에 result_int 값을 출력시켜 사용하였다.
'지식메모 > JAVA' 카테고리의 다른 글
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
---|---|
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기 (0) | 2014.12.29 |
Json의 이해 (0) | 2013.11.05 |
대문자 소문자 서로 변환하기 (0) | 2013.10.08 |
java 문자열 구분자로 자르기 (0) | 2013.10.02 |
java 문자열 구분자로 자르기
구분자를 지정하여 하나 이상의 값을 구분하여 데이터를 배열에 집어넣고 그 값을 꺼내 사용한다.
쿼리를 날릴때 조건이 두 가지가 있을때 사용하였다.
public static splitFunction(String ktype){ //ktype을 받는다. String ktypeWhere = ""; //ktypeWhere는 공백상태 String[] array = ktype.split(","); //콤마 구분자로 배열에 ktype저장 for(String cha : array){ //배열 갯수만큼 포문이 돌아간다. /* ktypeWhere가 비어있다면 ktypeWhere 에 cha 값을 넣고 비어있지 않다면 * 기존 값에 ,를 추가하여 cha를 덧붙인다. */ ktypeWhere += (ktypeWhere.equals("")) ? "'"+cha+"'" : ",'"+cha+"'"; } }
주석 설명대로 처음에 String ktype을 받는다.
만약 사과를 받았다면 "사과" 값이 하나 들어가지만
사과 포도를 받았다면 "사과,포도" 라고 값이 들어간다.
※※※※※※※※※
, 콤마로 구분자를 주었다면 입력할때도,콤마를 꼭 넣어주어야 한다.
그냥 "사과 포도" 이렇게 써도 자동으로 콤마가 들어가지않는다.
"사과,포도"이래야 구분이 가능하다.
※※※※※※※※※※※※※
그러면
String[] array = ktype.split(",");
여기서 split 이라는 함수가 , 를 구분자로 인식해서
String[] array라는 배열에 0번째부터 사과 1번째에는 포도라고 저장한다.
그 다음 포문을 돌리는데 조건문이
for(String cha : array) 이므로
array 갯수만큼 포문을 돈다.
현재 사과 포도 2개가 있으므로 2번 돌게 된다.
그럼 삼항연산자를 이용해서
ktypeWhere += (ktypeWhere.equals("")) ? "'"+cha+"'" : ",'"+cha+"'";값을 넣어준다.
처음에 String ktypeWhere = ""; 이라고 선언했으니 비어있는 상태다.
ktypeWhere.equals("") ? "'"+cha+"'" : ",'"+cha+"'" ; ktypeWhere가 값이 ""이므로 비어있다면 ? cha 값을 ktypeWhere에 넣어주고 : 안 비어있다면 ,를 붙여 cha값을 추가한다.; |
삼항연산자는
조건문 ? 만족할때 실행 : 만족못할때 실행
이런 형식이다.
만약 if문으로 한다면
if(ktypeWhere.equals("")){ ktypeWhere = cha; }else{ ktypeWhere += ","+cha; }
이렇게 될 것이다.(맞나?)
그럼 사과 포도 데이터가 2개 있으니 처음 포문을 돌때는 ktypeWhere가 값이 비어있으니
ktypeWhere = "사과" 이다.
두번째 포문을 돌때는 이미 사과가 들어가 있으므로 ,를 이용해서 붙인다.
그래서 ktypeWhere = "사과,포도"이다.
그리고 쿼리에 넣을때는 ' '표시를 해줘야 하기 때문에 "'"+ 이 구문을 넣어주었다.
쿼리 쓸 일이 아니라면 안 넣어줘도 된다.
그런 다음 ktypeWhere 값을 갖다 쓰면된다.
'지식메모 > JAVA' 카테고리의 다른 글
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
---|---|
Json의 이해 (0) | 2013.11.05 |
대문자 소문자 서로 변환하기 (0) | 2013.10.08 |
ObjectNode 와 JsonNode 차이? (0) | 2013.09.06 |
mp3 ID3 v2 태그 파싱하기 (3) | 2013.08.27 |
안드로이드 Spinner(스피너) 값 전달하기
스피너를 이용하여 값을 전달한 후 값에 따른 이미지를 출력하였다.
string.xml에 스피너에 쓰일 목록을 만들어둔다.
<string name="season">시즌</string> <string name="season_prompt">시즌 선택</string> <string-array name="season_array"> <item>봄</item> <item>여름</item> <item>가을</item> <item>겨울</item> </string-array>
그 다음 send.xml
<Spinner android:id="@+id/spinner_season" <!--스피너 아이디--> android:layout_width="wrap_content" android:layout_height="wrap_content" android:prompt="@string/season_prompt"<!-- string.xml에서 작성한 목록 --> android:layout_marginRight="10dp" />
이렇게 스피너를 만들어준다.
그리고 SendActivity.java 에서 스피너 값을 보내주자 OnCreate 부분에
Spinner spinner = (Spinner)findViewById(R.id.spinner_season);//send.xml의 스피너 아이디 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.season_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter);
이렇게 스피너를 선언해주고 Onclick메소드에 스피너 값을 인텐트에 태워 보낸다.
String str_season = spinner.getSelectedItem().toString(); Intent it3 = new Intent(this,ReceiveActivity.class); it3.putExtra("it3_season", str_season); //it3_season 이라는 스트링으로 str_season 값을 넘긴다. startActivity(it3);
이제 스피너 값에 따른 이미지를 출력하기 위해 receive.xml 에
이미지 뷰를 만들었다
<ImageView android:id="@+id/season_year" android:layout_width="wrap_content" android:layout_height="wrap_content" />
이제 ReceiveActivity.java 에서 받아보자.
마찬가지로 OnCreate 부분에
Intent it3=getIntent(); //인텐트를 받아오고 String str_season= it3.getStringExtra("it3_season"); //it3_season으로 보내온 값을 str_season에 저장 ImageView season = (ImageView)findViewById(R.id.season_year); //사진을 출력할 이미지뷰 if(str_season.equals("봄")){ //str_season 값이 봄이라면 BitmapDrawable img_season = (BitmapDrawable)getResources().getDrawable(R.drawable.spring); //봄 사진 가져와서 season.setImageDrawable(img_season);//봄 사진 출력 }else if(str_season.equals("여름")){ BitmapDrawable img_season = (BitmapDrawable)getResources().getDrawable(R.drawable.summer); season.setImageDrawable(img_season); }else if(str_season.equals("겨울")){ BitmapDrawable img_season = (BitmapDrawable)getResources().getDrawable(R.drawable.autumn); season.setImageDrawable(img_season); }else if(str_season.equals("가을")){ BitmapDrawable img_season = (BitmapDrawable)getResources().getDrawable(R.drawable.winter); season.setImageDrawable(img_season); }
여기서 애를 먹었던게 if 값을 그냥 평소 하던대로
if(str_season == "봄") 이런식으로 해줬는데 안되서 찾아보니까 String 값은
str_season.equals("봄")
이런식으로 해줘야 했다.
이제 스피너로 봄 값이 넘어오면 이미지뷰에 봄 사진을 넣어주고 여름이면 여름사진을 보여준다.
아 소스코드 태그 은근 귀찮네..
'지식메모 > 안드로이드 Android' 카테고리의 다른 글
안드로이드 레이아웃 버튼 보이기 숨기기 (1) | 2013.09.22 |
---|---|
안드로이드 EditText 에디트텍스트 값 남겨두기 (0) | 2013.09.09 |
안드로이드 dip px 변환하기 (0) | 2013.07.23 |
안드로이드 버튼 여러개 쓰기 (0) | 2013.07.21 |
안드로이드 공유하기 기능쓰기 (7) | 2013.07.21 |