그래서 저는 Creating Java dialogs 작업으로 계속 싸우고 있습니다. 이제 JOptionPane이 봉투가 너무 커서 새 창이 열리지 만이 창 크기를 변경할 수 없습니다. 또한 발신자의 데이터를 왼쪽 위 모서리에, 수신기의 데이터를 오른쪽 하단에 갖기를 원했습니다. 어떻게하면 될까요? OptionPane 자체에도 문제가 있습니다. '확인'을 클릭하면 화면의 왼쪽 상단에 작은 창이 열립니다. 이게 뭐야, 왜 나타나고있는거야?
내 코드 : 당신이에 대한 옵션 대화 상자를 사용하는 대신 자신의 JFrame의를 생성해서는 안처럼다른 JFrame을 여는 JOptionPane
import java.awt.*;
import java.awt.Font;
import javax.swing.*;
public class Main extends JFrame {
private static JTextField nameField = new JTextField(20);
private static JTextField surnameField = new JTextField();
private static JTextField addr1Field = new JTextField();
private static JTextField addr2Field = new JTextField();
private static JComboBox sizes = new JComboBox(new String[] { "small", "medium", "large", "extra-large" });
public Main(){
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
getContentPane().add(mainPanel);
JPanel addrPanel = new JPanel(new GridLayout(0, 1));
addrPanel.setBorder(BorderFactory.createTitledBorder("Receiver"));
addrPanel.add(new JLabel("Name"));
addrPanel.add(nameField);
addrPanel.add(new JLabel("Surname"));
addrPanel.add(surnameField);
addrPanel.add(new JLabel("Address 1"));
addrPanel.add(addr1Field);
addrPanel.add(new JLabel("Address 2"));
addrPanel.add(addr2Field);
mainPanel.add(addrPanel);
mainPanel.add(new JLabel(" "));
mainPanel.add(sizes);
String[] buttons = { "OK", "Cancel"};
int c = JOptionPane.showOptionDialog(
null,
mainPanel,
"My Panel",
JOptionPane.DEFAULT_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
buttons,
buttons[0]
);
if(c ==0){
new Envelope(nameField.getText(), surnameField.getText(), addr1Field.getText()
, addr2Field.getText(), sizes.getSelectedIndex());
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
class Envelope extends JFrame {
private final int SMALL=0;
private final int MEDIUM=1;
private final int LARGE=2;
private final int XLARGE=3;
public Envelope(String n, String s, String a1, String a2, int i){
Container content = getContentPane();
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
mainPanel.add(new JLabel("John Doe"));
mainPanel.add(new JLabel("FooBar str 14"));
mainPanel.add(new JLabel("Newark, 45-99"));
JPanel dataPanel = new JPanel();
dataPanel.setFont(new Font("sansserif", Font.PLAIN, 32)); //set size from i
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
mainPanel.setBackground(Color.ORANGE);
mainPanel.add(new JLabel("Mr "+n+" "+s));
mainPanel.add(new JLabel(a1));
mainPanel.add(new JLabel(a2));
content.setSize(450, 600);
content.setBackground(Color.ORANGE);
content.add(mainPanel, BorderLayout.NORTH);
content.add(dataPanel, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
Main http://img62.imageshack.us/img62/3619/mainscreensnapz001.jpg
alt text http://img24.imageshack.us/img24/8946/mainscreensnapz002.jpg
alt text http://img571.imageshack.us/img571/1621/mainscreensnapz003.jpg
나는 owca가 이미 당신에게 아주 좋은 푸시를 주었다고 생각합니다. 이번에는 좀 더 열심히 노력하지 마세요. 또한 가지고있는 스크린 샷과 유용 할만한 스크린 샷을 포함하여 코드를 복사하여 복사 할 필요가 없습니다. – OscarRyz
그냥 내가 편집 할 수 없다는 것을 깨달았다. [Main] (http://img62.imageshack.us/img62/3619/mainscreensnapz001.jpg), [바로 뒤에 오는 것] (http://img24.imageshack.us/img24/8946/mainscreensnapz002.jpg), [조금씩 확대] (http://img571.imageshack.us/img571/1621/mainscreensnapz003.jpg). –