Gå til innhold

[Løst] Valgbar boks med tekstinnhold


Anbefalte innlegg

Hei igjen, har dog ikke skrevet i javadelen av forumet før.

 

Jeg driver å lager ett kasseaparat/regning opplegg. Hvor hvert fakturaobjekt har artikler. Foreløbig blir bare alt regna ut og skrevet ut i ett JTextArea.

 

Det jeg dog lurer på er om det er noen måte å få en form for "boks" rundt hvert eneste artikkelobjekt som gjør at man kan velge dette objektet og fjerne det. Hver artikkel i fakturaen har en "unik" nøkkel, linjenummer. Har noen ideer om hva jeg kan se på, og hva det i det hele tatt heter så si ifra!

 

Har tenkt at det kan gå an å bruke en form for selectbox på det, men det vil bli så stygt, så det vil jeg helst unngå.

 

Jeg er relativt ustø i java, så kan godt forklare ting når dere legger ut, siden jeg mer eller mindre kommer til å spørre om ganske obvious ting.

 

Takker på forhånd.

Lenke til kommentar
Videoannonse
Annonse

Jeg ville ha brukt en JTable til å representere et fakturaobjekt, hvor hver artikkel er en rad. Jeg ville ha brukt en spalte med en button/JComboBox for å redigere hver rad, og en eller flere spalter til å beskrive en artikkel.

 

Sjekk ut JTable tutorial som beskriver hvordan du kan bruke en JTable, da spesielt avsnittene "Creating a Table Model", "Concepts: Editors and Renderers", "Using a Combo Box as an editor" og "Using Other Editors".

Lenke til kommentar

Jeg ville ha brukt en JTable til å representere et fakturaobjekt, hvor hver artikkel er en rad. Jeg ville ha brukt en spalte med en button/JComboBox for å redigere hver rad, og en eller flere spalter til å beskrive en artikkel.

 

Sjekk ut JTable tutorial som beskriver hvordan du kan bruke en JTable, da spesielt avsnittene "Creating a Table Model", "Concepts: Editors and Renderers", "Using a Combo Box as an editor" og "Using Other Editors".

 

Hei og takker for svar. Skal se på JTable nå tenkte jeg, har også laget ett utkast av hva jeg ser for meg :)

betalingsvinduopplegg.jpg

 

 

Her er den "blå" boksen den valgte artikkelen, og du får med dette mulighet til å f.eks slette artikkelen fra regningen.

Endret av LimeCut
Lenke til kommentar
  • 2 uker senere...

Hei. Jeg har kikka litt rundt, bla.a JTable, men fant ikke den like sexy som JList. :)

Har fått opp en nokså allright vindu nå (synes jeg selv)

fakturavindu.jpg

Det som dog er problemet er at jeg prøver nå å få ting på ei linje, men JList cellene nekter å bruke hele bredden. :S Noen som veit om noe lurt å gjøre her?

 

Legger også ved litt kode for det veit jeg mange synes er allright :)

 

JListTest.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package trioplaza;
import javax.swing.*;
import java.awt.*;
/**
*
* @author LimeCut
*/
public class JListTest extends JFrame{
Private dude;
JPanel topPane, middlePane, bottomPane;
JButton payEverything, deleteSelected,addFunds,b,back;
JList invoiceList;
JLabel header;

public JListTest(){
super("Faktura");

// Sånn awesome stuff

dude = new Private("kjell","1234","12345678912");
	System.out.println("dude made!");

	final Invoice faktura = new Invoice(dude);
	faktura.buyArticle(4000, "Rom 100", 1, 0.08);
	System.out.println("Rom1");
	faktura.buyArticle(1000, "Apekatt", 2, 0.08);
	System.out.println("Rom2");
	faktura.buyArticle(1, "Test", 1, 0.08);
	System.out.println("Rom3");
	faktura.buyArticle(50.50, "Trololol", 3, 0.08);
	System.out.println("Rom4");
	System.out.println("Ferdig med opprettelse av rom");

// Lager shit
topPane = new JPanel(new GridBagLayout());
middlePane = new JPanel(new GridBagLayout());
bottomPane = new JPanel(new GridBagLayout());

// Mekker shit
payEverything = new JButton("Betal");
deleteSelected = new JButton("Fjern");
addFunds = new JButton("Innskudd");
b = new JButton("Knapp");
back = new JButton("Tilbake");
payEverything.setPreferredSize(new Dimension(100,30));
deleteSelected.setPreferredSize(new Dimension(100,30));
addFunds.setPreferredSize(new Dimension(100,30));
b.setPreferredSize(new Dimension(100,30));
back.setPreferredSize(new Dimension(100,30));


header = new JLabel("Faktura for rom x");
//JListTest
invoiceList = new JList(new AbstractListModel() {
  String[] invoice = faktura.getContent(1);
  @Override
  public int getSize() {
  return invoice.length;
  }
  @Override
  public Object getElementAt(int index) {
  return invoice[index];
  }
  });
//invoiceList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
invoiceList.setPreferredSize(new Dimension(300,200));
//DefaultListCellRenderer renderer = (DefaultListCellRenderer)invoiceList.getCellRenderer();
//renderer.setHorizontalAlignment(JLabel.CENTER);

JScrollPane invoiceScroll = new JScrollPane(invoiceList);
invoiceScroll.setPreferredSize(new Dimension (400,190));

//TESTING FTW
GridBagConstraints gbcButtons = new GridBagConstraints();
gbcButtons.insets = new Insets(0,10,10,10);

GridBagConstraints gbcHeader = new GridBagConstraints();
gbcHeader.insets = new Insets(10,0,0,0);

GridBagConstraints gbcList = new GridBagConstraints();
gbcList.insets = new Insets(0,10,10,0);
gbcList.fill = GridBagConstraints.BOTH;

// Adder til JPanels
//gbc.gridx = 0;
//gbc.gridy = 0;
topPane.add(header, gbcHeader);

//gbc.gridx = 1;
//gbc.gridy = 1;
middlePane.add(invoiceScroll, gbcList);

gbcButtons.gridx = 0;
//gbc.gridy = 1;
bottomPane.add(payEverything, gbcButtons);
bottomPane.add(deleteSelected, gbcButtons);
bottomPane.add(addFunds, gbcButtons);
bottomPane.add(b, gbcButtons);
bottomPane.add(back, gbcButtons);

// Adder til JFRAME
add(topPane, BorderLayout.NORTH);
add(middlePane, BorderLayout.WEST);
add(bottomPane, BorderLayout.EAST);
  }
}

 

Div metoder fra Invoice og Article klassene

public String[] getContent( int x){
	double subtotal = 0;
	System.out.println("subtotal = "+subtotal);
	double vat = 0;
	System.out.println("vat = "+vat);
	System.out.println("Objekt ikke laget: getSize="+getSize());
	String[] test = new String[getSize()];
	System.out.println("Objekt laget. test.length="+test.length);
	seeker = head;
	for (int i=0; i &--#60; test.length ; i++){
		System.out.println((i+1)+". Gjennomgang");
		//test[i] = ""+seeker.getFirstLine()+ seeker.getSecondLine()+"";
		test[i] = seeker.toString();
		seeker = seeker.next;
	}
	return test;
}

 

 

public int getSize(){

	int count = 0;
	if (head == null){
		System.out.println("HODE ER NULL");
		return 0;
	}
	/*  else if (seeker.next == null){
		System.out.println("søker sin neste er NULL");
		return 1;
	}*/
	else{
		count++;
		seeker = head;
		System.out.println("SEEKER = HEAD");
		System.out.println("While begynner");
		while (seeker.next != null){
			System.out.println("søker sin neste er IKKE NULL");
			System.out.println("count = "+count);
			count++;
			if (count &--#62;= 10){
				System.out.println("COUNT ER STØRRE ELLER LIK 10");
				System.out.println("BREAK");
				break;
			}
			seeker = seeker.next;

			if (seeker.next == null){
				System.out.println("SØKER sin NESTE ER NULL");
				System.out.println("BREAK");
				break;
			}
		}
		System.out.println("FINAL count ="+count);
		return count;
	}
}

 

public String toString(){
		String output ="&--#60;html&--#62;"+orderline+"	 "+quantity+" X "+price+" 	 "+(quantity*price)+"&--#60;/html&--#62;";
		//String output ="\n\n"+lineNr+" "+orderline+": "+(quantity*price)+",-\n\t\t"+quantity+"*"+price;
		//String output ="Test";
		return output;
	}

 

Trur det skal være det som har noe med dette å gjøre sånn direkte i hvert fall :)

 

Takker for alle svar :)

 

PS: Beklager alle de System.out sakene, brukt til feilsøking og ikke fjerna enda x) :p heh

Endret av LimeCut
Lenke til kommentar

Fordi jeg synes JList så penere ut, rett og slett. Så dog ikke så nøye på stylinga i JTable. Men nå har jeg fått det til å se ut som jeg vil, så nå er jeg fornøyd og ser på saken som løst :) Takk for alle svar :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...