Hallo,
ich bin ein Anfänger das vorweg.
Ich habe derzeit nur mit dem in Eclipse eingebauten Windowbuilder eine GUI angefangen zu bauen.
Diese enthält eine jTable "tableLager" welche sich in einem jScrollPane "scrollPaneLager" befindet.
Ich wollte nun erreichen, dass über das Kontextmenü welches sich nur öffnen soll, wenn ich über der jScrollPane bin oder über der jTable, ich eine Zeile der jTable hinzufüge, bzw. lösche (wenn ich das Kontextmenü über einer Zeile der jTable öffne).
Ich weiß leider überhaupt nicht, wo ich da Anfangen soll.
Hier ist mein derzeitiger Quelltext:
Eventuell müsste man die Datei auch umstrukturieren, wäre da über jeden Hinweis dankbar.
In den Anhang habe ich mein derzeitiges Projekt exportiert, damit ihr einen besseren Überblick bekommt, was in der Datei drin steckt.
PS: später kommen dann noch Fragen, wie z.B.:
* wie kann ich per dropp und drag komplette Zeilen verschieben
* wie kann ich den Inhalt der Tabelle bei jedem neuen Start wieder Laden
* und wie kann ich die Tabelle drucken
ich bin ein Anfänger das vorweg.
Ich habe derzeit nur mit dem in Eclipse eingebauten Windowbuilder eine GUI angefangen zu bauen.
Diese enthält eine jTable "tableLager" welche sich in einem jScrollPane "scrollPaneLager" befindet.
Ich wollte nun erreichen, dass über das Kontextmenü welches sich nur öffnen soll, wenn ich über der jScrollPane bin oder über der jTable, ich eine Zeile der jTable hinzufüge, bzw. lösche (wenn ich das Kontextmenü über einer Zeile der jTable öffne).
Ich weiß leider überhaupt nicht, wo ich da Anfangen soll.
Hier ist mein derzeitiger Quelltext:
Java:
package medikit.view;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import java.awt.Toolkit;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JToolBar;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.ListSelectionModel;
import java.awt.CardLayout;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JLabel;
import java.awt.SystemColor;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.JScrollPane;
import javax.swing.JPopupMenu;
public class MainGUI extends JFrame{
private JPanel contentPane;
private JButton btnLager;
private JButton btnEinnahmeplan;
private JButton btnButton3;
private JButton btnSpeichern;
private JButton btnDrucken;
private JPanel cardsContainer;
final static String TITLE = "Medikit v0.1";
private JTable tableLager;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainGUI frame = new MainGUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainGUI() {
initComponents();
createEvents();
}
private void initComponents(){
setIconImage(Toolkit.getDefaultToolkit().getImage(MainGUI.class.getResource("/medikit/resources/img32x32/FirstAidKit.png")));
setTitle(TITLE);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(300, 300, 687, 472);
contentPane = new JPanel();
contentPane.setBorder(null);
setContentPane(contentPane);
JToolBar toolBar = new JToolBar();
toolBar.setFloatable(false);
btnLager = new JButton("Lager");
btnLager.setIcon(new ImageIcon(MainGUI.class.getResource("/medikit/resources/img32x32/Pills.png")));
toolBar.add(btnLager);
btnEinnahmeplan = new JButton("Einnahmeplan");
btnEinnahmeplan.setIcon(new ImageIcon(MainGUI.class.getResource("/medikit/resources/img32x32/Calendar.png")));
toolBar.add(btnEinnahmeplan);
btnButton3 = new JButton("Button3");
btnButton3.setIcon(new ImageIcon(MainGUI.class.getResource("/medikit/resources/img32x32/PatientData.png")));
toolBar.add(btnButton3);
btnSpeichern = new JButton("speichern");
btnSpeichern.setIcon(new ImageIcon(MainGUI.class.getResource("/medikit/resources/img32x32/Save.png")));
toolBar.add(btnSpeichern);
btnDrucken = new JButton("drucken");
btnDrucken.setIcon(new ImageIcon(MainGUI.class.getResource("/medikit/resources/img32x32/PrinterSettings.png")));
toolBar.add(btnDrucken);
cardsContainer = new JPanel();
cardsContainer.setBackground(SystemColor.inactiveCaptionBorder);
cardsContainer.setBorder(null);
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(toolBar, GroupLayout.DEFAULT_SIZE, 679, Short.MAX_VALUE)
.addComponent(cardsContainer, GroupLayout.DEFAULT_SIZE, 679, Short.MAX_VALUE)
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(toolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(cardsContainer, GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE))
);
cardsContainer.setLayout(new CardLayout(0, 0));
JPanel cardLager = new JPanel();
cardsContainer.add(cardLager, "name_49366894673764");
JScrollPane scrollPaneLager = new JScrollPane();
scrollPaneLager.setBorder(null);
scrollPaneLager.setViewportBorder(null);
GroupLayout gl_cardLager = new GroupLayout(cardLager);
gl_cardLager.setHorizontalGroup(
gl_cardLager.createParallelGroup(Alignment.LEADING)
.addGroup(gl_cardLager.createSequentialGroup()
.addGap(30)
.addComponent(scrollPaneLager, GroupLayout.DEFAULT_SIZE, 619, Short.MAX_VALUE)
.addGap(30))
);
gl_cardLager.setVerticalGroup(
gl_cardLager.createParallelGroup(Alignment.LEADING)
.addGroup(gl_cardLager.createSequentialGroup()
.addGap(39)
.addComponent(scrollPaneLager, GroupLayout.PREFERRED_SIZE, 282, GroupLayout.PREFERRED_SIZE)
.addContainerGap(73, Short.MAX_VALUE))
);
tableLager = new JTable();
tableLager.setModel(new DefaultTableModel(
new Object[][] {
{null, null, null, null, null, null},
{null, null, null, null, null, null},
{null, null, null, null, null, null},
},
new String[] {
"Medikament", "Wirkstoff", "Dosis", "Anz./Packung", "ges. St\u00FCckzahl", "verbraucht bis"
}
));
tableLager.getColumnModel().getColumn(0).setPreferredWidth(120);
tableLager.getColumnModel().getColumn(0).setMinWidth(80);
tableLager.getColumnModel().getColumn(1).setPreferredWidth(110);
tableLager.getColumnModel().getColumn(1).setMinWidth(58);
tableLager.getColumnModel().getColumn(2).setPreferredWidth(58);
tableLager.getColumnModel().getColumn(2).setMinWidth(43);
tableLager.getColumnModel().getColumn(3).setPreferredWidth(85);
tableLager.getColumnModel().getColumn(3).setMinWidth(85);
tableLager.getColumnModel().getColumn(4).setPreferredWidth(92);
tableLager.getColumnModel().getColumn(4).setMinWidth(92);
tableLager.getColumnModel().getColumn(5).setPreferredWidth(90);
tableLager.getColumnModel().getColumn(5).setMinWidth(90);
//nur einzelne Zeilen koennen ausgewählt werden
tableLager.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//tableLager.setRowSelectionInterval(tableLager.rowAtPoint(e.getPoint()),tableLager.rowAtPoint(e.getPoint()));
scrollPaneLager.setViewportView(tableLager);
JTableHeader header = tableLager.getTableHeader();
((DefaultTableCellRenderer)header.getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
cardLager.setLayout(gl_cardLager);
JPanel cardEinnahmeplan = new JPanel();
cardsContainer.add(cardEinnahmeplan, "name_49408729284029");
JLabel lblTest_1 = new JLabel("test2");
GroupLayout gl_cardEinnahmeplan = new GroupLayout(cardEinnahmeplan);
gl_cardEinnahmeplan.setHorizontalGroup(
gl_cardEinnahmeplan.createParallelGroup(Alignment.LEADING)
.addGroup(gl_cardEinnahmeplan.createSequentialGroup()
.addGap(60)
.addComponent(lblTest_1)
.addContainerGap(564, Short.MAX_VALUE))
);
gl_cardEinnahmeplan.setVerticalGroup(
gl_cardEinnahmeplan.createParallelGroup(Alignment.LEADING)
.addGroup(gl_cardEinnahmeplan.createSequentialGroup()
.addGap(22)
.addComponent(lblTest_1)
.addContainerGap(356, Short.MAX_VALUE))
);
cardEinnahmeplan.setLayout(gl_cardEinnahmeplan);
JPanel cardButton3 = new JPanel();
cardsContainer.add(cardButton3, "name_50694616728103");
JLabel lblLabel = new JLabel("label3");
GroupLayout gl_cardButton3 = new GroupLayout(cardButton3);
gl_cardButton3.setHorizontalGroup(
gl_cardButton3.createParallelGroup(Alignment.LEADING)
.addGroup(gl_cardButton3.createSequentialGroup()
.addGap(30)
.addComponent(lblLabel)
.addContainerGap(615, Short.MAX_VALUE))
);
gl_cardButton3.setVerticalGroup(
gl_cardButton3.createParallelGroup(Alignment.LEADING)
.addGroup(gl_cardButton3.createSequentialGroup()
.addContainerGap()
.addComponent(lblLabel)
.addContainerGap(372, Short.MAX_VALUE))
);
cardButton3.setLayout(gl_cardButton3);
contentPane.setLayout(gl_contentPane);
}
private void createEvents(){
btnLager.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
((CardLayout)cardsContainer.getLayout()).show(cardsContainer,"name_49366894673764");
}
});
btnEinnahmeplan.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
((CardLayout)cardsContainer.getLayout()).show(cardsContainer,"name_49408729284029");
}
});
btnButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
((CardLayout)cardsContainer.getLayout()).show(cardsContainer,"name_50694616728103");
}
});
btnSpeichern.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btnDrucken.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
}
}
Eventuell müsste man die Datei auch umstrukturieren, wäre da über jeden Hinweis dankbar.
In den Anhang habe ich mein derzeitiges Projekt exportiert, damit ihr einen besseren Überblick bekommt, was in der Datei drin steckt.
PS: später kommen dann noch Fragen, wie z.B.:
* wie kann ich per dropp und drag komplette Zeilen verschieben
* wie kann ich den Inhalt der Tabelle bei jedem neuen Start wieder Laden
* und wie kann ich die Tabelle drucken