所以我有两个类,一个用于登录,另一个用于主页。我将发布以下两个代码: 登录名:
package Interfata;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JOptionPane;
public class Login extends JFrame{
JPanel panelLogin;
JTextField usernameField;
JPasswordField parolaField;
JButton butonLogin,butonCancel;
public JPanel createContentPane (){
//Creez un panel pe care sa pun toate campurile.
panelLogin = new JPanel();
panelLogin.setLayout(null);
panelLogin.setBackground(new java.awt.Color(204, 204, 255));
panelLogin.setBorder(javax.swing.BorderFactory.createTitledBorder("Login"));
//usernameField
usernameField = new JTextField();
usernameField.setLocation(50, 50);
usernameField.setSize(300, 25);
usernameField.setHorizontalAlignment(JTextField.CENTER);
//placeholder pt usernameField
final String placeholderUsername = "Username";
usernameField.setText(placeholderUsername);
usernameField.addFocusListener(new FocusListener() {
private boolean showingPlaceholder = true;
public void focusGained(FocusEvent e) {
if (showingPlaceholder) {
showingPlaceholder = false;
usernameField.setText("");
}
}
public void focusLost(FocusEvent arg0) {
if (usernameField.getText().isEmpty()) {
usernameField.setText(placeholderUsername);
showingPlaceholder = true;
}
}
});
panelLogin.add(usernameField);
//parolaField
parolaField = new JPasswordField();
parolaField.setLocation(50, 100);
parolaField.setSize(300, 25);
parolaField.setHorizontalAlignment(JTextField.CENTER);
//placeholder pt parolaField
final String placeholderParola = "Parola";
parolaField.setText(placeholderParola);
parolaField.addFocusListener(new FocusListener() {
private boolean showingPlaceholder = true;
public void focusGained(FocusEvent e) {
if (showingPlaceholder) {
showingPlaceholder = false;
parolaField.setText("");
}
}
public void focusLost(FocusEvent arg0) {
if (parolaField.getText().isEmpty()) {
parolaField.setText(placeholderParola);
showingPlaceholder = true;
}
}
});
panelLogin.add(parolaField);
//butonLogin
butonLogin = new JButton("Login");
butonLogin.setLocation(70, 140);
butonLogin.setSize(100, 20);
butonLogin.addActionListener(new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
butonLoginActionPerformed(evt);
}
});
panelLogin.add(butonLogin);
//butonCancel
butonCancel = new JButton("Cancel");
butonCancel.setLocation(220, 140);
butonCancel.setSize(100, 20);
butonCancel.addActionListener(new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
butonCancelActionPerformed(evt);
}
});
panelLogin.add(butonCancel);
//Returnez panelul
panelLogin.setOpaque(true);
return panelLogin;
}
private void butonLoginActionPerformed(java.awt.event.ActionEvent evt) {
String uname=usernameField.getText();
String pword=parolaField.getText();
if(uname.equals("admin") && pword.equals("admin")){
Home ob=new Home();
ob.setVisible(true);
this.dispose();
}
else{
JFrame rootPane = null;
JOptionPane.showMessageDialog(rootPane, "Username sau parola incorecte","Eroare la conectare",JOptionPane.WARNING_MESSAGE);
}
}
private void butonCancelActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private static void Login() {
JFrame frameLogin = new JFrame("PLAFAR * Calinescu George-Catalin * 221");
//Creez panelul peste frame si il stilizez
Login login = new Login();
frameLogin.setContentPane(login.createContentPane());
frameLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frameLogin.setSize(400, 250);
frameLogin.setVisible(true);
}
public static void main(String[] args) {
//Creez GUI si il afisez pe ecran
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Login();
}
});
}
}
和家:
package Interfata;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.SwingUtilities;
public class Home extends JFrame{
JPanel panelHome;
static String[] listaplante=new String[10];
static String[] listacantitati=new String[10];
static String[] listapreturi=new String[10];
static int kPlante=0, kCantitati=0, kPreturi=0;
JButton butonCumpara,butonAdauga;
JTextField denumireField,pretField,cantitateField,cantitateDoritaField;
public JPanel createHomeContentPane (){
//Creez un panel pe care sa pun toate campurile.
panelHome = new JPanel();
panelHome.setLayout(null);
panelHome.setBackground(new java.awt.Color(204, 204, 255));
panelHome.setBorder(javax.swing.BorderFactory.createTitledBorder("Home"));
//Creez lista cu plante
DefaultListModel<String> listaPlante = new DefaultListModel<>();
JList<String> list = new JList<>(citirePlante());
list.setBounds(50,75, 75,100);
list.setSelectionBackground(Color.ORANGE);
panelHome.add(list);
//Creez lista cu cantitatile fiecarei plante
DefaultListModel<String> listaCantitati = new DefaultListModel<>();
JList<String> list2 = new JList<>(citireCantitati());
list2.setBounds(150,75, 75,100);
list2.setSelectionBackground(Color.YELLOW);
panelHome.add(list2);
//Creez lista cu preturile fiecarei plante
DefaultListModel<String> listaPreturi = new DefaultListModel<>();
JList<String> list3 = new JList<>(citirePreturi());
list3.setBounds(250,75, 75,100);
list3.setSelectionBackground(Color.GREEN);
panelHome.add(list3);
//Creez titlurile pt fiecare lista
JLabel denumireLabel=new JLabel("Denumire:");
denumireLabel.setBounds(50,55,70,20);
panelHome.add(denumireLabel);
JLabel cantitatiLabel=new JLabel("Cantitati:");
cantitatiLabel.setBounds(150,55,70,20);
panelHome.add(cantitatiLabel);
JLabel preturiLabel=new JLabel("Preturi:");
preturiLabel.setBounds(250,55,70,20);
panelHome.add(preturiLabel);
//Creez un camp pt a adauga cantitatea dorita care urmeaza a fi cumparata
//cantitateDoritaField
cantitateDoritaField = new JTextField();
cantitateDoritaField.setBounds(80,200,100,20);
cantitateDoritaField.setHorizontalAlignment(JTextField.CENTER);
//placeholder pt cantitateField
final String placeholderCantitateDorita = "Cantitatea dorita";
cantitateDoritaField.setText(placeholderCantitateDorita);
cantitateDoritaField.addFocusListener(new FocusListener() {
private boolean showingPlaceholder = true;
public void focusGained(FocusEvent e) {
if (showingPlaceholder) {
showingPlaceholder = false;
cantitateDoritaField.setText("");
}
}
public void focusLost(FocusEvent arg0) {
if (cantitateDoritaField.getText().isEmpty()) {
cantitateDoritaField.setText(placeholderCantitateDorita);
showingPlaceholder = true;
}
}
});
panelHome.add(cantitateDoritaField);
//Butonul de cumparare
butonCumpara = new JButton("Cumpara");
butonCumpara.setLocation(180, 200);
butonCumpara.setSize(100, 20);
butonCumpara.addActionListener(new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
String plantaselectata = list.getSelectedValue();
int indexplanta=list.getSelectedIndex();
String cantitateselectata = list2.getSelectedValue();
int indexcantitate=list2.getSelectedIndex();
String pretselectat = list3.getSelectedValue();
int indexpret=list3.getSelectedIndex();
String cantitatedorita=cantitateDoritaField.getText();
int valCantitate=Integer.valueOf(cantitateselectata);
int valCantitateDorita=Integer.valueOf(cantitatedorita);
int valPret=Integer.valueOf(pretselectat);
if(indexplanta==indexcantitate && indexplanta==indexpret){
if(valCantitateDorita<=valCantitate){
try {
afisPlantaCumparata(plantaselectata,valCantitateDorita);
} catch (IOException ex) {
Logger.getLogger(Home.class.getName()).log(Level.SEVERE, null, ex);
}
int a=valCantitate-valCantitateDorita;
String b=Integer.toString(a);
listacantitati[indexcantitate]=b;
panelHome.setVisible(false);
panelHome.setVisible(true);
}
else{
JFrame rootPane = null;
JOptionPane.showMessageDialog(rootPane, "Cantitatea nu esti disponibila","Eroare de cumparare",JOptionPane.WARNING_MESSAGE);
}
}
else{
JFrame rootPane = null;
JOptionPane.showMessageDialog(rootPane, "Planta, cantitate si pretul nu sunt din aceeasi categorie","Eroare de cumparare",JOptionPane.WARNING_MESSAGE);
}
}
});
panelHome.add(butonCumpara);
//Cumpurile denumire cantitate si pret pt adaugarea plantei
//denumireField
denumireField = new JTextField();
denumireField.setBounds(80,240,100,20);
denumireField.setHorizontalAlignment(JTextField.CENTER);
//placeholder pt denumireField
final String placeholderDenumire = "Denumire";
denumireField.setText(placeholderDenumire);
denumireField.addFocusListener(new FocusListener() {
private boolean showingPlaceholder = true;
public void focusGained(FocusEvent e) {
if (showingPlaceholder) {
showingPlaceholder = false;
denumireField.setText("");
}
}
public void focusLost(FocusEvent arg0) {
if (denumireField.getText().isEmpty()) {
denumireField.setText(placeholderDenumire);
showingPlaceholder = true;
}
}
});
panelHome.add(denumireField);
//cantitateField
cantitateField = new JTextField();
cantitateField.setBounds(80,260,100,20);
cantitateField.setHorizontalAlignment(JTextField.CENTER);
//placeholder pt cantitateField
final String placeholderCantitate = "Cantitatea";
cantitateField.setText(placeholderCantitate);
cantitateField.addFocusListener(new FocusListener() {
private boolean showingPlaceholder = true;
public void focusGained(FocusEvent e) {
if (showingPlaceholder) {
showingPlaceholder = false;
cantitateField.setText("");
}
}
public void focusLost(FocusEvent arg0) {
if (cantitateField.getText().isEmpty()) {
cantitateField.setText(placeholderCantitate);
showingPlaceholder = true;
}
}
});
panelHome.add(cantitateField);
//pretField
pretField = new JTextField();
pretField.setBounds(80,280,100,20);
pretField.setHorizontalAlignment(JTextField.CENTER);
//placeholder pt pretField
final String placeholderPret = "Pret";
pretField.setText(placeholderPret);
pretField.addFocusListener(new FocusListener() {
private boolean showingPlaceholder = true;
public void focusGained(FocusEvent e) {
if (showingPlaceholder) {
showingPlaceholder = false;
pretField.setText("");
}
}
public void focusLost(FocusEvent arg0) {
if (pretField.getText().isEmpty()) {
pretField.setText(placeholderPret);
showingPlaceholder = true;
}
}
});
panelHome.add(pretField);
//Butonul de adaugare a unei plantei noi
butonAdauga = new JButton("Adauga");
butonAdauga.setLocation(180, 260);
butonAdauga.setSize(100, 20);
butonAdauga.addActionListener(new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
String denumireNou=denumireField.getText();
String cantitateNou=cantitateField.getText();
String pretNou=pretField.getText();
listaplante[kPlante++]=denumireNou;
listacantitati[kCantitati++]=cantitateNou;
listapreturi[kPreturi++]=pretNou;
panelHome.setVisible(false);
panelHome.setVisible(true);
}
});
panelHome.add(butonAdauga);
//Returnez panelul
panelHome.setOpaque(true);
return panelHome;
}
public static String[] citirePlante(){
BufferedReader objReader = null;
try {
String strCurrentLine;
objReader = new BufferedReader(new FileReader("Plante.txt"));
while ((strCurrentLine = objReader.readLine()) != null) {
listaplante[kPlante] = strCurrentLine;
kPlante++;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (objReader != null)
objReader.close();
}catch (IOException ex) {
ex.printStackTrace();
}
}
return listaplante;
}
public static String[] citireCantitati(){
BufferedReader objReader = null;
try {
String strCurrentLine;
objReader = new BufferedReader(new FileReader("Cantitati.txt"));
while ((strCurrentLine = objReader.readLine()) != null) {
listacantitati[kCantitati] = strCurrentLine;
kCantitati++;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (objReader != null)
objReader.close();
}catch (IOException ex) {
ex.printStackTrace();
}
}
return listacantitati;
}
public static String[] citirePreturi(){
BufferedReader objReader = null;
try {
String strCurrentLine;
objReader = new BufferedReader(new FileReader("Preturi.txt"));
while ((strCurrentLine = objReader.readLine()) != null) {
listapreturi[kPreturi] = strCurrentLine;
kPreturi++;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (objReader != null)
objReader.close();
}catch (IOException ex) {
ex.printStackTrace();
}
}
return listapreturi;
}
public static void afisPlantaCumparata(String p, int c) throws IOException{
FileWriter writer = new FileWriter("PlanteVandute.txt");
try (
BufferedWriter bw = new BufferedWriter(writer)) {
bw.write(p+" "+c+"\n");
} catch (IOException e) {
System.err.format("IOException: %s%n", e);
}
}
private static void Home() {
JFrame frameHome = new JFrame("PLAFAR * Calinescu George-Catalin * 221");
//Creez panelul peste frame si il stilizez
Home home = new Home();
frameHome.setContentPane(home.createHomeContentPane());
frameHome.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frameHome.setSize(400, 350);
frameHome.setVisible(true);
}
public static void main(String[] args) {
//Creez GUI si il afisez pe ecran
/*try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}*/
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Home();
}
});
}
}
我有3个列表,我在其中存储一些数据,我想为每个一个滚动窗格实现,但是我尝试了很多事情,但我做不到,我想这是因为没有布局,但是我不想要现在就改变它。空布局和绝对布局是一回事吗?
当我想按下登录按钮并创建一个Home类型的对象时,它会弹出另一个页面,而不是我的HOMEPAGE,而且我不明白为什么
最后一件事,在按下按钮停止刷新我正在写入内容的文本文件后,该怎么办?
答案 0 :(得分:0)