Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Optimizacija metoda u Javi

[es] :: Java :: Optimizacija metoda u Javi

[ Pregleda: 2499 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

civideja

Član broj: 98858
Poruke: 25
*.dynamic.isp.telekom.rs.



+3 Profil

icon Optimizacija metoda u Javi01.05.2011. u 20:17 - pre 158 meseci
Prepravljam aplikaciju koja je pisana u Javi (GUI) i imam par problema:
1. Zadatak: optimizovati metod insertData, tako da ne sadrži toliko linija sličnog sadržaja.

String insertData(String template)
{
//insert menu items

template = template.replace("###menu1Link###", tbMenu1Link.getText());
template = template.replace("###menu1Title###", tbMenu1Title.getText());
template = template.replace("###menu2Link###", tbMenu2Link.getText());
template = template.replace("###menu2Title###", tbMenu2Title.getText());
template = template.replace("###menu3Link###", tbMenu3Link.getText());
template = template.replace("###menu3Title###", tbMenu3Title.getText());
template = template.replace("###menu4Link###", tbMenu4Link.getText());
template = template.replace("###menu4Title###", tbMenu4Title.getText());
template = template.replace("###menu5Link###", tbMenu5Link.getText());
template = template.replace("###menu5Title###", tbMenu5Title.getText());
template = template.replace("###menu6Link###", tbMenu6Link.getText());
template = template.replace("###menu6Title###", tbMenu6Title.getText());
//insert content
template = template.replace("###content###", epContent.getText());
//insert footer
template = template.replace("###footer###", epFooter.getText());
//insert images
template = template.replace("###image1###", tbImage1.getText());
template = template.replace("###image2###", tbImage2.getText());
//Insert rgb color in HTML
template = template.replace("#FF9900", tbRgbColor.getText()) ;
return template;
}
- Da budem iskren, ne znam ni na sta se misli pod pojmom optimizacija, jedino mogu da obrisem sve ove tarabe jer mi nisu mnogo potrebne.

2. Aplikacija otvara HTML kod i menja odredjene linije a zatim ponovo vraca HTML fajl. Ono sto je sledeci zadatak:
Omoguciti da korisnik može unositi proizvoljan broj stavki menija (a ne samo šest). Tj. tbMenu1Link + tbMenu1Title..su TextField kontrole i njih ima po 6 na Formi. Kada se ukuca tekst u tbMenu1Title na html-u se pojavi naslov linka a u tbMenu1Link se kuca cela adrsa sajta, na pr. Google(u polje tbMenu1Title) a http://www.google.com u tbMenu1Link. Sada ja mogu rucno da dodajem jos koliko god hocu Text Field kontrola ali je problem sto onda moram i u html kodu da dodajem jos linija tipa ###menu7Link### i td... Da li mogu nekako da postavim dugme koje ce otvoriti novu formu i na njoj opet pomocu sledeceg dugmeta da automatski dodajem Text Fields a zatim da sav tekst cuvam u posebnom fajlu (i da ga editujem tj prilagodim htmlu) pa umetnem u html ?
3. JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(null); Kod otvaranja fajlova mi je potreban FileFilter koji ce prikazivati samo slike (jpg, gif, bmp...) ali nikako ne mogu da to i uradim mada sam googlao 2 dana i svasta pokusao ali nikako ne umem.
 
Odgovor na temu

serbolicious

Član broj: 258796
Poruke: 92
109.77.32.*



+47 Profil

icon Re: Optimizacija metoda u Javi01.05.2011. u 21:11 - pre 158 meseci
1) mozda ako stavis ove template = template.replace("###menu1Link###", tbMenu1Link.getText()); u neku for petlju
2) za ovo moze da ti pomogne stavka pod 1)
3) http://download.oracle.com/jav...nents/filechooser.html#filters
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Optimizacija metoda u Javi01.05.2011. u 22:07 - pre 158 meseci
Prvo, jesi li siguran da ti treba optimizacija? Da ti ne treba možda refaktorisanje?
Znači optimizacija je proces izmene koda u cilju efikasnijeg korišćenja resursa.
Refaktorisanje sa druge strane je poboljšanje stila pisanja koda. Njegov rezultat je bolja čitljivost i smanjena složenost, koji omogućavaju lakše održavanje tog izvornog koda.

Pogledaj na vikipediji definicije ovih pojmova. Kad to rešiš lakše ćeš dalje..
Pretpostavljam da je ovo drugo u pitanju ali da ne prejudiciram
 
Odgovor na temu

civideja

Član broj: 98858
Poruke: 25
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Optimizacija metoda u Javi02.05.2011. u 13:39 - pre 158 meseci
Hvala puno na odgovorima, problem pod 3. sam resio:

private void tbImage2MouseClicked(java.awt.event.MouseEvent evt) {
JFileChooser jfc = new JFileChooser();
jfc.setFileFilter(new javax.swing.filechooser.FileFilter() {

@Override
public boolean accept(File f) {
if (f.isDirectory())
return true;
String fn = f.getName();
String e="";
int i = fn.lastIndexOf('.');
if (i > 0 && i < fn.length() - 1) {
e = fn.substring(i+1).toLowerCase();
}
if(e.equals("jpg")|| e.equals("gif")|| e.equals("png")
|| e.equals("tif")|| e.equals("jpeg")|| e.equals("tiff"))
return true;
else
return false;
}

@Override
public String getDescription() {
return "Image files";
}
});


int status = jfc.showOpenDialog(null);

if (status == JFileChooser.APPROVE_OPTION){ //OK dugme i akcija
s =(jfc.getSelectedFile()).toString();
tbImage2.setText(s); }
else if (status ==JFileChooser.CANCEL_OPTION) //Cancel dugme i akcija
tbImage2.setText("Please select image file!");

}

Medjutim, problem 1 i 2 nisam resio. Za 1 i ja pretpostavljam da trebam napraviti petlju, ali kako da promenim html kod (osim rucno) da pronadjem trazeni tekst i da ga zamenim tekstom iz Tekst Fieldova? Evo ga HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>My site</title>
<style type="text/css">
<!--
.style1 {font-weight: bold}
-->
</style>
</head>

<body>
<table width="649" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="411" height="19" valign="top"><img src="###image1###" /></td>
<td align="right" valign="top"><img src="###image2###" /></td>
</tr>
<tr>
<td height="3" colspan="2" valign="top"></td>
</tr>
<tr>
<td height="25" colspan="2" valign="middle" bgcolor="#FF9900" style="padding-left:4px;"><span class="style1"><a href="###menu1Link###">###menu1Title###</a> <a href="###menu2Link###">###menu2Title###</a> <a href="###menu3Link###">###menu3Title###</a> <a href="###menu4Link###">###menu4Title###</a> <a href="###menu5Link###">###menu5Title###</a> <a href="###menu6Link###">###menu6Title###</a></span></td>
</tr>
<tr>
<td height="27" colspan="2" valign="top" style="padding:4px;">
###content###
</td>
</tr>
<tr>
<td height="24" colspan="2" align="center" valign="top" style="padding: 3px;" bgcolor="#FF9900">
###footer###
</td>
</tr>
</table>
</body>
</html>

A sto se tice optimizacije, profesor mi je to naveo kao zadatak - mada cesto ni oni nisu bas precizni u svojim zahtevima. Ne znam da li da probam pomocu niza i string buildera...najvise me bune imena mojih promenljivih, ne znam kako bih njih mogao da provucem kroz niz: tbMenu(i)Link a i=1, i++...
 
Odgovor na temu

serbolicious

Član broj: 258796
Poruke: 92
109.78.255.*



+47 Profil

icon Re: Optimizacija metoda u Javi02.05.2011. u 14:06 - pre 158 meseci
nisam iznenadjen sto profesor kaze optimizacija a misli na refactoring (kao sto je biske86 primetio). Bitno je da ti znas razliku :)

pa da, tbMenu(i)Link stavi u niz i pristupaj preko indeksa, a taj isti indeks koristi da napravis one ###image2### placeholders i to je to!
Sve mozes u bukvalno 3-4 linije koda da odradis

 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Optimizacija metoda u Javi02.05.2011. u 18:22 - pre 157 meseci
Kao što reče serbolicious, možeš da staviš ovo u dva niza i da pojednostaviš samu metodu. Evo primera:

Code:

public class Test {
    public static void main(String[] args) {
        //Neki kod...
        String[] menuOld = {"###menu1Link###", "###menu1Title###", "###menu2Link###", "###menu2Title###", "###menu3Link###", "###menu3Title###", "###menu4Link###", "###menu4Title###", "###menu5Link###", "###menu5Title###", "###menu6Link###", "###menu6Title###", "###content###", "###footer###", "###image1###", "###image2###", "#FF9900"};
        String[] menuNew = {tbMenu1Link.getText(), tbMenu1Title.getText(), tbMenu2Title.getText(), tbMenu3Link.getText(), tbMenu3Title.getText(), tbMenu4Link.getText(), tbMenu4Title.getText(), tbMenu5Link.getText(), tbMenu5Title.getText(), tbMenu6Link.getText(), tbMenu6Title.getText(), epContent.getText(), epFooter.getText(), tbImage1.getText(), tbImage2.getText(), tbRgbColor.getText()};
        template = insertData(template, menuOld, menuNew);
    }
    String insertData(String template, String[] menuOld, String[] menuNew)
    {
        for (int i=0; i<menuOld.length; i++)
            template = template.replace(menuOld[i], menuNew[i]);
        return template;
    }
}



Naravno kod nije konačan zato što nam nisi pokazao kako izgledaju ostale klase, ovo je samo predlog..
 
Odgovor na temu

civideja

Član broj: 98858
Poruke: 25
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Optimizacija metoda u Javi02.05.2011. u 22:09 - pre 157 meseci
Hvala vam puno! Ideja mi je jasna ali mi je realizacija ravna nuli - za 5h cackanja nisam uspeo da 'optimizujem' kod. Evo kompletnih klasa (ostavio sam pod komentarom ono sto sam cackao, pa mi ako mozete ukazite na greske): MainForm.java:

import java.awt.Color;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JColorChooser;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

public class MainForm extends javax.swing.JFrame {
private Integer red;
private Integer blue;
private Integer green;
private String s;


/** Creates new form MainForm */
public MainForm() {
initComponents();
}

String getData()
{
FileReader fr = null;
StringBuilder html = new StringBuilder();
try
{
fr = new FileReader ("template.html");
int b;
while ((b = fr.read())!= -1 )
{
html.append(Character.toString((char)b));
}
fr.close();
}
catch(IOException ex) {JOptionPane.showMessageDialog(epContent,"Error loading template!");
}
return html.toString();
}



// String insertData(String template)
// {

//insert menu items

/*
String[] menuOld = {"###menu1Link###", "###menu1Title###",
"###menu2Link###", "###menu2Title###", "###menu3Link###",
"###menu3Title###", "###menu4Link###", "###menu4Title###",
"###menu5Link###", "###menu5Title###", "###menu6Link###",
"###menu6Title###", "###content###", "###footer###",
"###image1###", "###image2###", "#FF9900"};

String[] menuNew = {tbMenu1Link.getText(), tbMenu1Title.getText(),
tbMenu2Title.getText(), tbMenu3Link.getText(), tbMenu3Title.getText(),
tbMenu4Link.getText(), tbMenu4Title.getText(), tbMenu5Link.getText(),
tbMenu5Title.getText(), tbMenu6Link.getText(), tbMenu6Title.getText(),
epContent.getText(), epFooter.getText(), tbImage1.getText(),
tbImage2.getText(), tbRgbColor.getText()};

// template = insertData1(template, menuOld, menuNew);
for (int i=0; i<menuOld.length; i++){
template = template.replace(menuOld, menuNew);}
// template = template.replaceAll(menuOld, menuNew);}
// return template;

return template;}

*/

/* String insertData1(String template, String[] menuOld, String[] menuNew) {
for (int i=0; i<menuOld.length; i++)
template = template.replace(menuOld, menuNew);
return template;
}
*/ // throw new UnsupportedOperationException("Not yet implemented");}



// String insertData(String template, String[] menuOld, String[] menuNew)
// {
// for (int i=0; i<menuOld.length; i++)
// template = template.replace(menuOld, menuNew);}
// return template; }

String insertData(String template) // Ovo treba da se optimizuje
{
template = template.replace("###menu1Link###", tbMenu1Link.getText());
template = template.replace("###menu1Title###", tbMenu1Title.getText());
template = template.replace("###menu2Link###", tbMenu2Link.getText());
template = template.replace("###menu2Title###", tbMenu2Title.getText());
template = template.replace("###menu3Link###", tbMenu3Link.getText());
template = template.replace("###menu3Title###", tbMenu3Title.getText());
template = template.replace("###menu4Link###", tbMenu4Link.getText());
template = template.replace("###menu4Title###", tbMenu4Title.getText());
template = template.replace("###menu5Link###", tbMenu5Link.getText());
template = template.replace("###menu5Title###", tbMenu5Title.getText());
template = template.replace("###menu6Link###", tbMenu6Link.getText());
template = template.replace("###menu6Title###", tbMenu6Title.getText());
//insert content
template = template.replace("###content###", epContent.getText());
//insert footer
template = template.replace("###footer###", epFooter.getText());
//insert images
template = template.replace("###image1###", tbImage1.getText());
template = template.replace("###image2###", tbImage2.getText());
//Insert rgb color in HTML
template = template.replace("#FF9900", tbRgbColor.getText()) ;
return template; }

void saveData(String data)
{
JFileChooser jfc = new JFileChooser();
jfc.setVisible(true);
jfc.setFileFilter(new javax.swing.filechooser.FileFilter() {

@Override
public boolean accept(File f) {
if (f.isDirectory())
return true;
String fn = f.getName();
String e="";
int i = fn.lastIndexOf('.');
if (i > 0 && i < fn.length() - 1) {
e = fn.substring(i+1).toLowerCase();
}
if(e.equals("html"))
return true;
else
return false;
}

@Override
public String getDescription() {
return "html files";
}
});
int res = jfc.showSaveDialog(this);
if(res!=JFileChooser.CANCEL_OPTION&&jfc.getSelectedFile()!=null)
{
FileWriter fw = null;

try {
fw = new FileWriter(jfc.getSelectedFile());
fw.write(data);
fw.close();
JOptionPane.showMessageDialog(epContent,"Dokument je uspesno sacuvan!");
} catch (IOException ex) { }
finally {
try { fw.close(); } catch (IOException ex) { }
}

}
else JOptionPane.showMessageDialog(rootPane, "File not selected!");
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLabelMenuOptions = new javax.swing.JLabel();
jLabelContentText = new javax.swing.JLabel();
jLabelFooterText = new javax.swing.JLabel();
jLabelImages = new javax.swing.JLabel();
tbMenu1Title = new javax.swing.JTextField();
tbMenu2Title = new javax.swing.JTextField();
tbMenu3Title = new javax.swing.JTextField();
tbMenu4Title = new javax.swing.JTextField();
tbMenu5Title = new javax.swing.JTextField();
tbMenu6Title = new javax.swing.JTextField();
tbMenu1Link = new javax.swing.JTextField();
tbMenu2Link = new javax.swing.JTextField();
tbMenu3Link = new javax.swing.JTextField();
tbMenu4Link = new javax.swing.JTextField();
tbMenu5Link = new javax.swing.JTextField();
tbMenu6Link = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
epContent = new javax.swing.JEditorPane();
jScrollPane2 = new javax.swing.JScrollPane();
epFooter = new javax.swing.JEditorPane();
tbImage2 = new javax.swing.JTextField();
btnGenerate = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
tbImage1 = new javax.swing.JTextField();
btnColorChange = new javax.swing.JButton();
tbRgbColor = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabelMenuOptions.setText("Menu options");

jLabelContentText.setText("Content text");

jLabelFooterText.setText("Footer text");

jLabelImages.setText("Images");

jScrollPane1.setViewportView(epContent);

jScrollPane2.setViewportView(epFooter);

tbImage2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tbImage2MouseClicked(evt);
}
});

btnGenerate.setText("Generate");
btnGenerate.setToolTipText("Create your HTM code");
btnGenerate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnGenerateActionPerformed(evt);
}
});

jButton1.setText("Add more");
jButton1.setToolTipText("Add more sites with description");

tbImage1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tbImage1MouseClicked(evt);
}
});

btnColorChange.setText("Change colors");
btnColorChange.setToolTipText("Change colors of futer and menu in your HTML");
btnColorChange.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnColorChangeActionPerformed(evt);
}
});

tbRgbColor.setText("RGB Value");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(125, 125, 125)
.addComponent(jLabelMenuOptions))
.addGroup(layout.createSequentialGroup()
.addGap(125, 125, 125)
.addComponent(jLabelContentText))
.addGroup(layout.createSequentialGroup()
.addGap(126, 126, 126)
.addComponent(jLabelFooterText))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(btnGenerate)
.addGap(18, 18, 18)
.addComponent(btnColorChange)
.addGap(21, 21, 21)
.addComponent(tbRgbColor))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(tbImage1, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(tbImage2))
.addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(tbMenu3Title)
.addComponent(tbMenu2Title)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(tbMenu1Title, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE)
.addComponent(tbMenu4Title)
.addComponent(tbMenu6Title)
.addComponent(tbMenu5Title)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(tbMenu3Link)
.addComponent(tbMenu2Link)
.addComponent(tbMenu1Link, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE)
.addComponent(tbMenu4Link)
.addComponent(tbMenu5Link)
.addComponent(tbMenu6Link))))
.addGap(18, 18, 18)
.addComponent(jButton1))))
.addGroup(layout.createSequentialGroup()
.addGap(152, 152, 152)
.addComponent(jLabelImages)))
.addContainerGap(33, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelMenuOptions)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tbMenu1Title, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tbMenu1Link, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(tbMenu2Link, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tbMenu2Title, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tbMenu3Link, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tbMenu3Title, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tbMenu4Title, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tbMenu4Link, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tbMenu5Title, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tbMenu5Link, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tbMenu6Title, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tbMenu6Link, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(jLabelContentText)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabelFooterText)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabelImages)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tbImage2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tbImage1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(7, 7, 7)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnGenerate)
.addComponent(tbRgbColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnColorChange))
.addGap(34, 34, 34))
);

pack();
}// </editor-fold>

private void btnGenerateActionPerformed(java.awt.event.ActionEvent evt) {
saveData(insertData(getData()));

}

private void tbImage1MouseClicked(java.awt.event.MouseEvent evt) {
JFileChooser jfc = new JFileChooser();
//jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
jfc.setFileFilter(new javax.swing.filechooser.FileFilter() {

@Override
public boolean accept(File f) {
if (f.isDirectory())
return true;
String fn = f.getName();
String e="";
int i = fn.lastIndexOf('.');
if (i > 0 && i < fn.length() - 1) {
e = fn.substring(i+1).toLowerCase();
}
if(e.equals("jpg")|| e.equals("gif")|| e.equals("png")
|| e.equals("tif")|| e.equals("jpeg")|| e.equals("tiff"))
return true;
else
return false;
}

@Override
public String getDescription() {
return "Image files";
}
});


int status = jfc.showOpenDialog(null);

if (status == JFileChooser.APPROVE_OPTION){
s =(jfc.getSelectedFile()).toString();
tbImage1.setText(s); }
else if (status ==JFileChooser.CANCEL_OPTION)
tbImage1.setText("Please select image file!");

}








private void btnColorChangeActionPerformed(java.awt.event.ActionEvent evt) {
JColorChooser jcc = new JColorChooser();
Color c = jcc.showDialog(null,"Chose color of menu and futer",Color.ORANGE);

red = c.getRed();
//tbMenu4Link.setText(red.toString());
green = c.getGreen();
//tbMenu5Link.setText(green.toString());
blue = c.getBlue();
//tbMenu6Link.setText(blue.toString());

tbRgbColor.setText("rgb(" + red.toString()+","+ green.toString()+","+blue.toString()+")");
}

private void tbImage2MouseClicked(java.awt.event.MouseEvent evt) {
JFileChooser jfc = new JFileChooser();
//jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
jfc.setFileFilter(new javax.swing.filechooser.FileFilter() {

@Override
public boolean accept(File f) {
if (f.isDirectory())
return true;
String fn = f.getName();
String e="";
int i = fn.lastIndexOf('.');
if (i > 0 && i < fn.length() - 1) {
e = fn.substring(i+1).toLowerCase();
}
if(e.equals("jpg")|| e.equals("gif")|| e.equals("png")
|| e.equals("tif")|| e.equals("jpeg")|| e.equals("tiff"))
return true;
else
return false;
}

@Override
public String getDescription() {
return "Image files";
}
});


int status = jfc.showOpenDialog(null);

if (status == JFileChooser.APPROVE_OPTION){
s =(jfc.getSelectedFile()).toString();
tbImage2.setText(s); }
else if (status ==JFileChooser.CANCEL_OPTION)
tbImage2.setText("Please select image file!");

}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainForm().setVisible(true);

}
});
}

// Variables declaration - do not modify
private javax.swing.JButton btnColorChange;
private javax.swing.JButton btnGenerate;
private javax.swing.JEditorPane epContent;
private javax.swing.JEditorPane epFooter;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabelContentText;
private javax.swing.JLabel jLabelFooterText;
private javax.swing.JLabel jLabelImages;
private javax.swing.JLabel jLabelMenuOptions;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextField tbImage1;
private javax.swing.JTextField tbImage2;
private javax.swing.JTextField tbMenu1Link;
private javax.swing.JTextField tbMenu1Title;
private javax.swing.JTextField tbMenu2Link;
private javax.swing.JTextField tbMenu2Title;
private javax.swing.JTextField tbMenu3Link;
private javax.swing.JTextField tbMenu3Title;
private javax.swing.JTextField tbMenu4Link;
private javax.swing.JTextField tbMenu4Title;
private javax.swing.JTextField tbMenu5Link;
private javax.swing.JTextField tbMenu5Title;
private javax.swing.JTextField tbMenu6Link;
private javax.swing.JTextField tbMenu6Title;
private javax.swing.JTextField tbRgbColor;
// End of variables declaration
}

Main.java:
public class Main {
public static void main(String[] args) {
MainForm mf = new MainForm();
mf.setVisible(true);
}
}
 
Odgovor na temu

civideja

Član broj: 98858
Poruke: 25
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Optimizacija metoda u Javi07.05.2011. u 09:37 - pre 157 meseci
Nasao sam gresku, nisam dodao tbMenu2Link.getText() pa su nizovi bili razlicitih duzina, evo kompletnog metoda:

String insertData(String template)
{
//insert menu items

String[] menuOld = {"###menu1Link###", "###menu1Title###",
"###menu2Link###", "###menu2Title###", "###menu3Link###",
"###menu3Title###", "###menu4Link###", "###menu4Title###",
"###menu5Link###", "###menu5Title###", "###menu6Link###",
"###menu6Title###", "###content###", "###footer###",
"###image1###", "###image2###", "#FF9900"};

String[] menuNew = {tbMenu1Link.getText(), tbMenu1Title.getText(),
tbMenu2Link.getText(),tbMenu2Title.getText(), tbMenu3Link.getText(), tbMenu3Title.getText(),
tbMenu4Link.getText(), tbMenu4Title.getText(), tbMenu5Link.getText(),
tbMenu5Title.getText(), tbMenu6Link.getText(), tbMenu6Title.getText(),
epContent.getText(), epFooter.getText(), tbImage1.getText(),
tbImage2.getText(), tbRgbColor.getText()};

for (int i=0; i<menuOld.length; i++){
template = template.replace(menuOld, menuNew)
;}
return template;}
 
Odgovor na temu

hepek87
Stručni
AJN
Doboj, BiH

Član broj: 309283
Poruke: 3
*.javnenabavke.gov.ba.



Profil

icon Re: Optimizacija metoda u Javi30.11.2012. u 09:47 - pre 138 meseci
Pozdrav,

Imam problem sa ovim istim kodom. Završio sam optimiziranje/refactoring coda ali nemam ideje kako omogućiti korisniku dodavanje proizvoljnog broja stavki menija (problem pod 2). Da li je neko riješio ovaj problem ili ima neki savjet za rješavanje ovakvog problema?

Unaprijed hvala
 
Odgovor na temu

ByteCode
Byte Code
Beograd

Član broj: 298867
Poruke: 21
*.dta.co.rs.

Sajt: speedy-order.com


+22 Profil

icon Re: Optimizacija metoda u Javi30.11.2012. u 15:54 - pre 138 meseci
Citat:
biske86:
Kao što reče serbolicious, možeš da staviš ovo u dva niza i da pojednostaviš samu metodu. Evo primera:

Code:

public class Test {
    public static void main(String[] args) {
        //Neki kod...
        String[] menuOld = {"###menu1Link###", "###menu1Title###", "###menu2Link###", "###menu2Title###", "###menu3Link###", "###menu3Title###", "###menu4Link###", "###menu4Title###", "###menu5Link###", "###menu5Title###", "###menu6Link###", "###menu6Title###", "###content###", "###footer###", "###image1###", "###image2###", "#FF9900"};
        String[] menuNew = {tbMenu1Link.getText(), tbMenu1Title.getText(), tbMenu2Title.getText(), tbMenu3Link.getText(), tbMenu3Title.getText(), tbMenu4Link.getText(), tbMenu4Title.getText(), tbMenu5Link.getText(), tbMenu5Title.getText(), tbMenu6Link.getText(), tbMenu6Title.getText(), epContent.getText(), epFooter.getText(), tbImage1.getText(), tbImage2.getText(), tbRgbColor.getText()};
        template = insertData(template, menuOld, menuNew);
    }
    String insertData(String template, String[] menuOld, String[] menuNew)
    {
        for (int i=0; i<menuOld.length; i++)
            template = template.replace(menuOld[i], menuNew[i]);
        return template;
    }
}



Naravno kod nije konačan zato što nam nisi pokazao kako izgledaju ostale klase, ovo je samo predlog..


ovaj kod nije dobar :), ovaj menuNew vraca stringove, a zapravo je bolja varijanta da vraca same objekte pa da u metodi pozivas getText(), jer taj metod neces pozvati samo jednom vec vise puta.

Drugo, ako nije u pitanju neki studenstki zadatak, vec neki pravi projekat, imalo bi smisla da se ne koristi cisti string kao template vec da se uzme neki templating engine, tipa velocity,free marker, ili stringtemplate.
 
Odgovor na temu

hepek87
Stručni
AJN
Doboj, BiH

Član broj: 309283
Poruke: 3
*.javnenabavke.gov.ba.



Profil

icon Re: Optimizacija metoda u Javi03.12.2012. u 11:27 - pre 138 meseci
U pitanju je studentski zadatak gdje je trebalo prepraviti kod tako da se omogući unos slika, promjena boja i još neke druge stvari. Ja sam riješio sve ostale podzadatke osim ovog da se omogući korisniku unos proizvoljnog broja stavki menija. Jedna od mogućnosti je i korištenje jTable ali i ona ima limitiran/fiksni broj redova. Da li postoji neka mogućnost da se ubaci neki jButton i podesi akcija tako da kada korisnik klikne dugme da aplikacija doda dva nova text polja na interfejs?
 
Odgovor na temu

[es] :: Java :: Optimizacija metoda u Javi

[ Pregleda: 2499 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.