1. 투명화

JCheckBox jcb = new JCheckBox();

위처럼 대충 컴포넌트 객체 생성했으면

아래처럼

jcb.setOpaque(false);

하면 투명화 된다.

생성자 함수에서는 대충 setOpaque(false); 만 넣으면 됨. JFrame 상속받았을 시에만.

반드시 Swing 에서만 가능함. 일반 Frame 등에서는 안먹힌다.

2. 텍스트 필드 수정 가능/불가능

텍스트필드 ?? = new 텍스트필드();

??.setEditable(false);

해당 텍스트 필드를 수정할 수 없게 한다. 아무것도 안쓰면 그냥 가능함

3. 기본

setLayout(new BorderLayout()); //레이아웃의 형태를 지정한다. 여러가지 있음

- BorderLayout(), FlowLayout(), GridLayout(2,1) 등....

setSize(400, 200); //프레임의 사이즈를 정해준다.

setLocation(650, 100); //프레임의 윈도우상 화면의 위치를 정해준다.

setResizable(false); //창크기 조정 가능/불가능 여부

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //x자 눌렀을때의 액션

setMenuBar(??); //??의 메뉴바 변수를 이용해 해당 프레임에 메뉴바를 넣는다.

setVisible(true); //보이게 할지 말지

addWindowListener(this); //액션 버튼들을 사용가능하게 하기 위해

setTitle("프로그램"); //프레임의 타이틀을 붙인다.

4. my sql - db불러오기

Connection conn;
PreparedStatement pstmt;

final static String connStr = "jdbc:mysql://localhost/server?user=root&password=";

public void ????() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(connStr);
} catch (SQLException ex) {
} catch (ClassNotFoundException e) {
}
}

5. 현재 시간 불러오기

1) 일반적인 방법

import java.util.*;
import java.text.*;

임포트는 두개가 꼭 들어가야지 되고~

SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd", Locale.KOREA); //dd 다음에 시간도 넣을 수 있지!!
Date currentTime = new Date();
String dTime = formatter.format(currentTime);
JLabel time = new JLabel(dTime); ///요놈 수정하면 뿌려주는 위치 변경할 수 있지!

지금 이건 JLabel이라서 해당 라벨 중앙에 대충 뿌려주는 거고 여기서 응용해서 위치 정해주면 되겠징.

2) 쉬운방법

Calendar now = Calendar.getInstance();
Date dTime = now.getTime();
JLabel time = new JLabel(dTime.toString());

??.add(time);

??은 판넬 변수. 저런식으로 집어넣으면 잘 들어간다. 단지 포멧 지정이 뭔지 몰라서 영어로 샬라샬라 나오긴 하지만.ㅋㅋ


6. 판넬 배경 지정하기

ImageIcon icon;

생성자 함수{

icon = new ImageIcon("image/메인.jpg"); //경로 지정 프로젝트 내부의 image내부의 jpg 파일을 불러오는 경우
JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L;

public void paintComponent(Graphics g) {
g.drawImage(icon.getImage(), 0, 0, null);
setOpaque(false);
super.paintComponent(g);
}
};

panel.setPreferredSize(new Dimension(840, 640)); //사이즈 정하기

add(panel); //판넬 붙이기

7. 자바로 시스템 시간 변경하기 jni 아닌 exec 방식

import java.io.IOException;

public class SystemTimeChanger {
public static void setDate(String date) {
String commandForDate = "cmd /C date " + date;try {
Runtime.getRuntime().exec(commandForDate);
} catch (IOException e) {
System.err.println(e);
}
}

public static void setTime(String time) {
String commandForTime = "cmd /C time " + time;

try {
Runtime.getRuntime().exec(commandForTime);
} catch (IOException e) {
System.err.println(e);
}
}

public static void setDateAndTime(String date, String time) {
setDate(date);
setTime(time);
}

public static void main(String[] args) {
String date = "2000-01-01";
String time = "00:00:00.00";
if (args.length == 2) {
date = args[0];
time = args[1];
}

setDateAndTime(date, time);
}
}

8. 10진수를 쉽게 16진수로 바꾸는 방법

public class Foo {
public static void main(String args[]) {

// 10진수를 16진수로 출력: 가장 간단한 방법 ㅎㅎ
System.out.format("%02X%n", 255); // FF
System.out.format("%02x%n", 255); // ff
System.out.format("%X%n" , 10); // A


String s = String.format("%02X%n", 10); // 16진수 문자열로 변환
System.out.println("문자열로 만들어서 출력: " + s); // 문자열로 만들어서 출력: 0A


// 10진수를 16진수로: 불편한 방법
System.out.println(Integer.toHexString(255)); // ff
System.out.println(Integer.toHexString(255).toUpperCase()); // 대문자로: FF
System.out.println(Integer.toHexString(10).toUpperCase()); // A

}
}

%X : 헥사를 대문자로
%x : 헥사를 소문자로
%02X : 2자리 헥사를 대문자로, 그리고 1자리 헥사는 앞에 0을 붙임
%n : 다음줄로 줄바꿈하기


9. 테이블로 불러온 데이터베이스 갱신하기

public static String sql = "SELECT * FROM accounts";

public static void reloadRecord(String lsql) {
sql = lsql;
scp.getViewport().remove(jTable); //기존의 테이블을 지운다.
jTable = CreateTable(); //새로운 테이블 생성
jTable.getTableHeader().setReorderingAllowed(false);// 이동 불가
jTable.getTableHeader().setResizingAllowed(false);// 크기 조절 불가
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); // 자동 컬럼 조절
scp.getViewport().add(jTable); //테이블 붙여넣기
up.repaint(); //판넬 다시 그려주기
}

10. DB 테이블로 불러오기

위의 9번과 연계하여 사용할 것!

public static JTable CreateTable() {
Object[] col = null;
Object[][] data = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(connStr);

pstmt = conn.prepareStatement(sql);

rs = pstmt.executeQuery();
rsmd = rs.getMetaData();

col = new Object[rsmd.getColumnCount()];
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
col[i - 1] = rsmd.getColumnName(i);
}

int initNum = getResultSetSize(rs);
data = new Object[initNum][];
int index = 0;

while (rs.next()) {
data[index++] = new Object[] { rs.getString("login"),
rs.getString("nickname"), rs.getString("password"),
rs.getString("lastactive"), rs.getString("ip"),
rs.getString("host"), rs.getString("mac"),
rs.getString("code") };
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
DBsql.close(rs);
DBsql.close(conn);
}
JTable NewTable = new JTable(data, col) {
private static final long serialVersionUID = 1L;

public boolean isCellEditable(int rowIndex, int mCollIndex) {
return false;
}
};
DefaultTableCellRenderer tableRender = new DefaultTableCellRenderer();
tableRender.setHorizontalAlignment(JLabel.CENTER); //값을 가운데 정렬시키기

NewTable.setPreferredScrollableViewportSize(new Dimension(708, 323));
NewTable.setBackground(Color.white);


NewTable.getColumnModel().getColumn(0).setMinWidth(0);
NewTable.getColumnModel().getColumn(0).setPreferredWidth(100);
NewTable.getColumnModel().getColumn(1).setPreferredWidth(100);
NewTable.getColumnModel().getColumn(2).setPreferredWidth(150);
NewTable.getColumnModel().getColumn(3).setPreferredWidth(150);
NewTable.getColumnModel().getColumn(4).setPreferredWidth(100);
NewTable.getColumnModel().getColumn(5).setPreferredWidth(100);
NewTable.getColumnModel().getColumn(6).setPreferredWidth(100);
NewTable.getColumnModel().getColumn(7).setPreferredWidth(100);
// 테이블 마다 column 사이즈 정해주기

// 값을 가운데 정렬시키기 연계

for (int i = 0; i < NewTable.getColumnCount(); i++) {
NewTable.getColumnModel().getColumn(i).setCellRenderer(tableRender);
}

data = null;
col = null;

return NewTable;
}

public static int getResultSetSize(ResultSet resultSet) throws SQLException {
int size = -1;
resultSet.last();
size = resultSet.getRow();
resultSet.beforeFirst();

return size;
}

Posted by 해밀튼